Я работаю с потоками (Java 8), и когда я использую этот метод .stream()
, мне не ясна разница между .map
и .flatMap
. Какие различия существуют между этими методами?
Я работаю с потоками (Java 8), и когда я использую этот метод .stream()
, мне не ясна разница между .map
и .flatMap
. Какие различия существуют между этими методами?
Разница в том, что он
map()
возвращает то же количество элементов, что и входной поток, поскольку это просто проекция входных элементов. То есть каждый входной элемент преобразуется в выходной элемент.С другой стороны
.flatMap()
, он проецирует список элементов из каждого исходного элемента и объединяет их в один поток .Например:
карта()
плоская карта ()
Ну, разница в том, что .map выдает выходное значение для каждого входного значения, а .flatmap выдает от нуля до n выходных значений для каждого входного значения, примерно следующим образом:
map::Stream T (I -> O)
Прилагаю пример кода: