Je regarde les docs pour le IntStream
, et je vois une méthode toArray
, mais aucun moyen d'aller directement à un List<Integer>
Il existe sûrement un moyen de convertir une Stream
en List
?
IntStream.boxed
transforme une IntStream
en Stream<Integer>
, que vous pouvez ensuite collect
dans une liste:
theIntStream.boxed().collect(Collectors.toList())
Vous pouvez également utiliser mapToObj () sur un flux, qui prend une fonction IntFunction et renvoie un flux à valeur objet contenant les résultats de l'application de la fonction donnée aux éléments de ce flux.
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
Vous pouvez utiliser les collections primitives disponibles dans Eclipse Collections et éviter la boxe.
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
Remarque: je contribue aux collections Eclipse.
Trouvez l'exemple suivant de recherche d'un carré de chaque élément int en utilisant Java 8: -
IntStream ints = Arrays.stream(new int[] {1,2,3,4,5});
List<Integer> intsList = ints.map(x-> x*x)
.collect(ArrayList<Integer>::new, ArrayList::add, ArrayList::addAll);