Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
302

Преобразование списка списков в список в Java 8

При работе с Java 8 часто возникает необходимость преобразовать список списков (List<List<Object>>) в одномерный список (List<Object>). Проще говоря, понадобится

При работе с Java 8 часто возникает необходимость преобразовать список списков (List<List<Object>>) в одномерный список (List<Object>). Проще говоря, понадобится «сгладить» вложенные списки в один общий список. Это может быть полезно в случае, когда нужно работать со всеми элементами независимо от их вложенности.

Рассмотрим пример. Предположим, у нас есть список списков целых чисел:

List&lt;List&lt;Integer&gt;&gt; listOfLists = Arrays.asList(
    Arrays.asList(1, 2, 3),
    Arrays.asList(4, 5, 6),
    Arrays.asList(7, 8, 9)
);

Цель — преобразовать его в один список, содержащий все числа в том же порядке:

List&lt;Integer&gt; flatList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

Java 8 предоставляет удобные средства для работы со списками, включая и такие операции. Для преобразования списка списков в одномерный список можно использовать метод flatMap(). Это метод потока (Stream), который «сглаживает» структуру, превращая вложенные потоки в один общий поток.

Вот как это может выглядеть на практике:

List&lt;Integer&gt; flatList = listOfLists.stream()    // Создаем поток из списка списков
    .flatMap(List::stream)                       // Преобразуем каждый вложенный список в поток и "сглаживаем" структуру
    .collect(Collectors.toList());               // Собираем результат в список

В результате получим нужный нам одномерный список. Это простой и эффективный способ преобразования списка списков в одномерный список в Java 8.

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

Подарок
Забрать подарок