Jika saya punya List<List<Object>>
, bagaimana saya bisa mengubahnya menjadi List<Object>
yang berisi semua objek dalam urutan iterasi yang sama dengan menggunakan fitur Java 8?
java
collections
java-8
Sarah Szabo
sumber
sumber
::
:)Class::method
terasa sedikit aneh pada awalnya, tetapi memiliki manfaat bahwa ia menyatakan jenis objek yang Anda pemetaan. Jika tidak demikian, itu adalah sesuatu yang Anda kehilangan dalam aliran.flatmap
lebih baik tetapi ada cara lain untuk mencapai hal yang samasumber
The
flatMap
metode padaStream
kaleng tentu meratakan daftar tersebut untuk Anda, tetapi harus membuatStream
objek untuk elemen, makaStream
untuk hasil.Anda tidak perlu semua
Stream
benda itu. Berikut adalah kode ringkas dan ringkas untuk melakukan tugas tersebut.Karena
List
iniIterable
, kode ini panggilan yangforEach
metode (Java 8 fitur), yang diwarisi dariIterable
.Dan
List
'sIterator
kembali item secara berurutan.Untuk
Consumer
, kode ini meneruskan referensi metode (fitur Java 8) ke metode pra-Java 8List.addAll
untuk menambahkan elemen daftar bagian dalam secara berurutan.sumber
Anda dapat menggunakan
flatCollect()
pola dari Eclipse Collections .Jika Anda tidak dapat mengubah daftar dari
List
:Catatan: Saya adalah kontributor untuk Eclipse Collections.
sumber
Seperti yang disebutkan oleh @Saravana:
Singkatnya, ada beberapa cara untuk mencapai hal yang sama sebagai berikut:
sumber
Saya hanya ingin menjelaskan satu skenario lebih seperti
List<Documents>
, daftar ini berisi daftar yang lebih beberapa dokumen lain sepertiList<Excel>
,List<Word>
,List<PowerPoint>
. Jadi strukturnyaSekarang jika Anda ingin mengulangi Excel hanya dari dokumen kemudian lakukan sesuatu seperti di bawah ini ..
Jadi kodenya
Saya harap ini dapat memecahkan masalah seseorang saat ...
sumber
Kami dapat menggunakan flatmap untuk ini, silakan lihat kode di bawah ini:
sumber
Perluasan jawaban Eran yang merupakan jawaban teratas, jika Anda memiliki banyak lapisan daftar, Anda dapat terus memetakannya.
Ini juga dilengkapi dengan cara pemfilteran yang praktis saat Anda membuka lapisan jika diperlukan juga.
Jadi misalnya:
Ini akan serupa dalam SQL untuk memiliki pernyataan SELECT dalam pernyataan SELECT.
sumber
Metode untuk mengonversi a
List<List>
menjadiList
:Lihat contoh ini:
Mencetak:
sumber