Sobes.tech
Back to questions
Junior — Middle
68

Объясните концепцию метода flatMap в Java Stream API и его отличие от map.

Companies where asked
JSA Group

Answer from AI

sobes.tech AI

Метод flatMap в Java Stream API используется для преобразования каждого элемента потока в другой поток, а затем объединяет ("сплющивает") все эти потоки в один единый поток. В отличие от map, который преобразует каждый элемент в один элемент другого типа, flatMap преобразует каждый элемент в поток элементов и объединяет их.

Пример:

List<String> words = Arrays.asList("hello", "world");

// map: преобразует каждое слово в массив символов, но результат - поток массивов
Stream<char[]> mapped = words.stream().map(word -> word.toCharArray());

// flatMap: преобразует каждое слово в поток символов и объединяет их в один поток символов
Stream<Character> flatMapped = words.stream()
    .flatMap(word -> word.chars().mapToObj(c -> (char) c));

flatMapped.forEach(System.out::println);

Таким образом, flatMap полезен, когда из одного элемента нужно получить несколько элементов и работать с ними как с единым потоком.