Развертывание потока в Java
Метод map заменяет элемент на один новый
объект. Метод flatMap нужен, когда у каждого
элемента есть целая коллекция или поток, и все
внутренние значения должны идти подряд в общей
цепочке.
Строку с словами через пробел можно разбить на отдельные токены:
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> lines = List.of("go rust", "java kotlin");
List<String> words = lines.stream()
.flatMap(line -> Arrays.stream(line.split(" ")))
.toList();
System.out.println(words);
}
}
Если у записи несколько тегов, flatMap
развернет списки тегов в один поток строк:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Article> feed = List.of(
new Article(List.of("java", "stream")),
new Article(List.of("api"))
);
List<String> tags = feed.stream()
.flatMap(article -> article.tags.stream())
.toList();
System.out.println(tags);
}
}
record Article(List<String> tags) {}
Дан код:
var strings = List.of("a-b", "c-d-e");
Разбейте каждую строку по символу "-", соберите все части в один список и выведите его.
Дан код:
var nums = List.of(2, 3);
Для каждого числа постройте список его кратных от одного до трех и выведите один итоговый список.