2017-06-01 4 views
1

mit Ich habe ein Stream<Student[]> Objekt und ich brauche als List<Student>Convert-Stream <Object[]> zur Liste <Object> Java Stream

zu sammeln, wenn ich, verwenden obj.collect(Collectors.toList()) dann bekomme ich List<Student[]>

Gibt es einen besseren Weg, um dieses umgebaute zu bekommen ?

+0

Der bessere Weg ist: create Stream von 'Student' (z. B. von' List '), dann werden Sie diese Probleme nicht haben. – syntagma

+0

Ich habe eine Mapping-Funktion, die Stream zurückgibt, so konnte ich Stream Sanjeev

+0

nicht bauen Ändern Sie das Design dann. – syntagma

Antwort

5
List<Object> flat = objArrs.stream() 
          .flatMap(Stream::of) 
          .collect(Collectors.toList()); 

oder

List<Object[]> list = ... 
List<Object> l = list.stream() 
        .flatMap(arr -> Stream.of(arr)) 
        .collect(Collectors.toList()); 
2

Wie wäre das? Sie können Stream#flatMap verwenden, um alle Student[] in einem List zusammen zu verschmelzen.

stream.flatMap(students-> Stream.of(students)).collect(Collectors.toList()); 

Die Dokumentation sagt:

Die flatMap() Befehl die Wirkung hat, ein auf die Elemente des Stroms einer Eins-zu-viele-Transformation anzuwenden, und Abflachen dann die resultierenden Elemente in eine neue Strom.

+1

Vergiss meinen vorherigen Kommentar, 'Stream.of' funktioniert gut –

Verwandte Themen