HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В разработке иногда встречается задача "выпрямления" вложенных списков, то есть создания одного плоского списка из списка списков или списка массивов. В стримах за это отвечает метод flatMap(), который работает как показано в коде ниже.</p>
1 <p>В разработке иногда встречается задача "выпрямления" вложенных списков, то есть создания одного плоского списка из списка списков или списка массивов. В стримах за это отвечает метод flatMap(), который работает как показано в коде ниже.</p>
2 <p>flatMap() работает как отображение map, которое применяет к каждому элементу стрима переданную лямбду. Эта лямбда преобразует каждый элемент, в нашем случае список чисел, в стрим. Когда все элементы преобразованы в стримы, выполняется вторая часть flatMap, стримы объединяются в один.</p>
2 <p>flatMap() работает как отображение map, которое применяет к каждому элементу стрима переданную лямбду. Эта лямбда преобразует каждый элемент, в нашем случае список чисел, в стрим. Когда все элементы преобразованы в стримы, выполняется вторая часть flatMap, стримы объединяются в один.</p>
3 <p>Особенно часто flatMap() встречается в работе с файловой системой при чтении списка файлов и директорий, а так же при работе с содержимым файлов. Ниже мы разберем подобный пример, но если он вам покажется слишком сложным, то не переживайте, просто пропустите его и вернитесь позже.</p>
3 <p>Особенно часто flatMap() встречается в работе с файловой системой при чтении списка файлов и директорий, а так же при работе с содержимым файлов. Ниже мы разберем подобный пример, но если он вам покажется слишком сложным, то не переживайте, просто пропустите его и вернитесь позже.</p>
4 <p>Для примера посчитаем частоту слов в файле. Для этого прочитаем файл с помощью File.lines(), этот метод возвращает стрим состоящий из строк файла. Именно здесь нам понадобится flatMap() для обработки каждой строки.</p>
4 <p>Для примера посчитаем частоту слов в файле. Для этого прочитаем файл с помощью File.lines(), этот метод возвращает стрим состоящий из строк файла. Именно здесь нам понадобится flatMap() для обработки каждой строки.</p>
5 <p>Это маленькая программа, но в ней происходит очень много всего сразу. Разберем ее построчно.</p>
5 <p>Это маленькая программа, но в ней происходит очень много всего сразу. Разберем ее построчно.</p>
6 <ul><li>Конструкция try нужна для работы с такими ресурсами как файлы, она никак не влияет на нашу программу, поэтому не обращаем на нее внимание, она изучается позже.</li>
6 <ul><li>Конструкция try нужна для работы с такими ресурсами как файлы, она никак не влияет на нашу программу, поэтому не обращаем на нее внимание, она изучается позже.</li>
7 <li>Читается файл<em>README.md</em>построчно в переменную lines. Метод Files.lines возвращает Stream&lt;String&gt;.</li>
7 <li>Читается файл<em>README.md</em>построчно в переменную lines. Метод Files.lines возвращает Stream&lt;String&gt;.</li>
8 <li>Вызывается flatMap(), который преобразует набор строк в плоский список слов. Для этого внутри лямбды каждая строка разбивается на слова. Получившийся массив преобразуется в стрим с помощью Arrays.stream.</li>
8 <li>Вызывается flatMap(), который преобразует набор строк в плоский список слов. Для этого внутри лямбды каждая строка разбивается на слова. Получившийся массив преобразуется в стрим с помощью Arrays.stream.</li>
9 <li>Все слова приводятся к нижнему регистру, на случай если они были написаны по-разному. Это называется нормализацией данных.</li>
9 <li>Все слова приводятся к нижнему регистру, на случай если они были написаны по-разному. Это называется нормализацией данных.</li>
10 <li>Выполняется группировка слов по частоте.</li>
10 <li>Выполняется группировка слов по частоте.</li>
11 </ul>
11 </ul>