Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
30 Май 2024
2 мин
127

Извлечение списка из java.util.stream.Stream в Java 8

В процессе работы с коллекциями в Java 8 часто приходится сталкиваться с потоками данных (Streams). Одной из распространенных задач является необходимость

В процессе работы с коллекциями в Java 8 часто приходится сталкиваться с потоками данных (Streams). Одной из распространенных задач является необходимость фильтрации данных в коллекции и получение нового списка на основе отфильтрованных данных. Например, можно столкнуться с задачей извлечения из исходного списка чисел всех чисел, которые больше определенного значения.

В такой ситуации обычно используется метод stream(), предоставляемый коллекциями в Java 8, с последующим применением метода filter(). Однако, после фильтрации данных, часто возникает необходимость получить новый список с результатами. Возможно, вы уже пробовали добавить отфильтрованные элементы в новый список с помощью метода forEach(), но это не самый удобный и элегантный способ.

List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);

Вместо этого, можно использовать метод collect(), который позволяет нам обрабатывать и собирать элементы потока в различные структуры данных, включая коллекции. В частности, для получения нового списка можно использовать встроенный в Java 8 метод Collectors.toList():

List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = sourceLongList.stream().filter(l -> l > 100).collect(Collectors.toList());

Теперь targetLongList — это новый список, который содержит все числа из sourceLongList больше 100. Таким образом, с помощью метода collect() и Collectors.toList() можно эффективно и лаконично преобразовывать отфильтрованные потоки данных обратно в списки.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий