2014-05-15 13 views
157

ich bin für die IntStream bei der Dokumentation suchen, und ich sehe eine toArray Methode, aber keine Möglichkeit, zu einem List<Integer> zu gehen direktWie konvertiere ich einen Java 8 IntStream in eine Liste?

Sicherlich eine Art und Weise gibt es eine Stream zu einem List zu konvertieren?

+0

diesen Link versuchen: http: //stackoverflow.com/questions/14830313/retrieving-a-list-from-a-java-util-stream-stream-in-java8 –

Antwort

323

IntStream.boxed dreht eine IntStream in eine Stream<Integer>, die Sie dann collect in eine Liste:

theIntStream.boxed().collect(Collectors.toList()) 
+3

Das ist die einzig richtige Antwort ist. –

+3

@ginz Es ist definitiv nicht die einzige richtige Antwort, aber es wird die beste Antwort sein. – skiwi

+13

Danke, das 'boxed()' Stück ist leicht zu übersehen, und wesentlich. –

6

Sie primitive Sammlungen in Eclipse Collections verwenden können und Boxen vermeiden.

MutableIntList list = 
    IntStream.range(1, 5) 
    .collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll); 

Hinweis: Ich arbeite für Eclipse Collections.

+2

Obwohl Eclipse Collections normalerweise ziemlich hilfreich sind, sieht das nicht so aus, als ob es überhaupt etwas einfacher macht :) – Ben

10

Sie können mapToObj() auch für einen Stream verwenden, der eine IntFunction verwendet und einen objektwertigen Stream zurückgibt, der aus den Ergebnissen der Anwendung der angegebenen Funktion auf die Elemente dieses Streams besteht.

List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList()); 
Verwandte Themen