2016-07-12 10 views
4

Ich muss Elemente in einem List duplizieren.Doppelte Elemente in einem Stream in Java

Also, wenn die Liste ist:

["firstItem", "secondItem"] 

Ich möchte eine Liste zurück, die:

["firstItem","firstItem","secondItem","secondItem"] 

Ich versuche, dies durch die flatMap Funktion zu tun, aber ich bin nicht sicher, wie man es macht.

List<T> duplicatedList = originalList.stream() 
      .flatMap(u -> Stream.of()) // how to duplicate items?? 
      .collect(Collectors.toList()); 

Antwort

5

erstellen Strom aus zwei identischen Einheiten:

List<String> originalList = Arrays.asList("firstItem","secondItem"); 
List<String> duplicatedList = originalList.stream() 
     .flatMap(u -> Stream.of(u,u)) 
     .collect(Collectors.toList()); 
System.out.println(duplicatedList); 

Ausgang:

[firstItem, firstItem, secondItem, secondItem] 
+0

Was ist der Vorteil der Verwendung von Strom und sammeln in diesem Fall. Ich denke, dass Fragen auf den Vorteil der Verwendung von add vs addAll kocht. –

1

Ich denke, das ist einfach und besser lesbar:

originalList.addAll(originalList); 

Ausgang:

[firstItem, secondItem, firstItem, secondItem] 
+2

Eigentlich würde Ihr Code '[firstItem, secondItem, firstItem, secondItem]' 'erzeugen, wenn also die Reihenfolge zählt, gibt es nicht die gewünschte Ausgabe. – Eran

+0

Vielen Dank, ich habe die Bestellung nicht bemerkt. Jetzt korrigiere ich meine Ausgabe. –