Wie kann ich eine Liste von Listen in eine Liste in Java 8 umwandeln?



java arraylist (3)

Ich möchte nur ein weiteres Szenario wie List<Documents> erklären, diese Liste enthält einige weitere Listen anderer Dokumente wie List<Excel> , List<Word> , List<PowerPoint> . So ist die Struktur

Class A{
  List<Documents> documentList
}

Class Documents{
  List<Excel> excels
  List<Word> words
  List<PowerPoint> ppt
}

Nun, wenn Sie Excel nur aus Dokumenten iterieren möchten, dann tun Sie etwas wie unten ..

Also wäre der Code

 List<Document> documentList = new A().getDocumentList();

 //check documentList as not null

 Optional<Excel> excelOptional = documentList.stream()
                         .map(doc -> doc.getExcel())
                         .flatMap(List::stream).findFirst();
 if(excelOptional.isPresent()){
   Excel exl = optionalExcel.get();
   // now get the value what you want.
 }

Ich hoffe, dass dies jemandes Problem beim Codieren lösen kann ..

https://ffff65535.com

Wenn ich eine List<List<Object>> , wie kann ich diese in ein List<Object> verwandeln, das alle Objekte in derselben Iterationsreihenfolge enthält, indem ich die Funktionen von Java 8 verwende?


Sie können flatMap , um die internen Listen (nach dem Konvertieren in Streams) in einen einzigen Stream zu flatMap und das Ergebnis dann in einer Liste zu sammeln:

List<List<Object>> list = ...
List<Object> flat = 
    list.stream()
        .flatMap(List::stream)
        .collect(Collectors.toList());

flatmap ist besser, aber es gibt andere Möglichkeiten, dasselbe zu erreichen

List<List<Object>> listOfList = ... // fill

List<Object> collect = listOfList.stream().collect(ArrayList::new, List::addAll, List::addAll);




java-8