Если у меня есть List<List<Object>>
, как я могу превратить это в, List<Object>
который содержит все объекты в том же порядке итерации, используя функции Java 8?
java
collections
java-8
Сара Сзабо
источник
источник
::
:)Class::method
сначала кажется немного странным, но имеет то преимущество, что объявляет, из какого типа объекта вы отображаете. Это то, что вы иначе потеряете в потоках.flatmap
лучше, но есть и другие способы достичь того жеисточник
flatMap
Метод на ,Stream
безусловно , может придавить эти списки для вас, но он должен создаватьStream
объекты для элемента, тоStream
для результата.Вам не нужны все эти
Stream
объекты. Вот простой и лаконичный код для выполнения задачи.Так как
List
этоIterable
, этот код вызывает вforEach
метод (Java 8 функций), который наследуется отIterable
.И А
List
«SIterator
возвращает элементы в последовательном порядке.Для этого
Consumer
этот код передает ссылку на метод (функция Java 8) в метод перед Java 8List.addAll
для последовательного добавления элементов внутреннего списка.источник
Вы можете использовать
flatCollect()
шаблон из Eclipse Collections .Если вы не можете изменить список из
List
:Примечание: я участвую в коллекциях Eclipse.
источник
Так же, как @Saravana упомянул:
Подводя итог, существует несколько способов добиться того же:
источник
Я просто хочу объяснить еще один сценарий , как
List<Documents>
, этот список содержит несколько списков других документов , таких какList<Excel>
,List<Word>
,List<PowerPoint>
. Итак, структураТеперь, если вы хотите перебрать Excel только из документов, сделайте что-то вроде ниже.
Так что код будет
Я надеюсь, что это может решить чью-то проблему во время кодирования ...
источник
Мы можем использовать flatmap для этого, пожалуйста, обратитесь ниже код:
источник
Расширение ответа Эрана, которое было главным ответом, если у вас есть несколько слоев списков, вы можете продолжать отображать их.
Это также идет с удобным способом фильтрации, когда вы спускаетесь по слоям, если это необходимо.
Так, например:
В SQL это похоже на наличие операторов SELECT внутри операторов SELECT.
источник
Метод для преобразования
List<List>
вList
:Смотрите этот пример:
Это печатает:
источник