@KarlRichter L'autre question ne vous donne pas de liste dactylographiée. En outre, cette question date d'il y a quatre ans et a une réponse avec plus de 300 votes positifs. Pourquoi essayons-nous de le fusionner maintenant?
La boxedméthode convertit les intvaleurs primitives d'un IntStreamen un flux d' Integerobjets. Le mot "boxe" nomme le processus de conversion int⬌ Integer. Voir Oracle Tutorial .
@skiwi Je veux dire, que toutes les autres réponses sont inutiles après celle-ci car elles ne seraient pas si naturelles.
Dmitry Ginzburg
1
Merci, je n'avais pas encore vu la méthode en boîte et cela a fonctionné comme un charme.
twreid
Addition: Je pense que ce code devient un peu plus court, plus clair et plus joli si vous utilisez une importation statique de toList. Cela se fait en plaçant les éléments suivants parmi les importations du fichier: static import java.util.stream.Collectors.toList;. Ensuite, l'appel de collecte lit juste .collect(toList()).
Lii
1
Dans Eclipse, il est possible de faire en sorte que l'EDI ajoute une importation statique pour les méthodes. Pour ce faire, ajoutez la Collectorsclasse dans Préférences -> Java -> Éditeur -> Assistant de contenu -> Favoris . Après cela, il vous suffit de taper toLiau hit Ctr + Space pour que l'IDE remplisse toListet ajoute l'importation statique.
Lii
2
Je me suis arraché les cheveux pour savoir ce qui n'allait pas avec ce que j'avais essayé, merci d'avoir souligné la boxed()partie
K Raphael
16
Vous pouvez également utiliser mapToObj () sur un Stream, qui prend une IntFunction et retourne un Stream à valeur objet composé des résultats de l'application de la fonction donnée aux éléments de ce flux.
Bien que les collections Eclipse soient généralement très utiles, cela ne semble pas du tout faciliter les choses :)
Ben
1
Depuis EC 9.0, vous pouvez créer une liste primitive à partir d'un flux primitif. MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Donald Raab
1
C'est ce que je cherchais .. boxer le flux int vers Integer ou pour objecter est une chose différente
Vikash
2
Trouvez l'exemple suivant pour trouver le carré de chaque élément int à l'aide de Java 8: -
Remarque: Le troisième paramètre n'est requis que si vous souhaitez exécuter une collecte parallèle; pour la collecte séquentielle, fournir uniquement les deux premiers suffira.
Réponses:
IntStream::boxed
IntStream::boxed
transforme unIntStream
en unStream<Integer>
, que vous pouvez ensuitecollect
transformer enList
:La
boxed
méthode convertit lesint
valeurs primitives d'unIntStream
en un flux d'Integer
objets. Le mot "boxe" nomme le processus de conversionint
⬌Integer
. Voir Oracle Tutorial .la source
toList
. Cela se fait en plaçant les éléments suivants parmi les importations du fichier:static import java.util.stream.Collectors.toList;
. Ensuite, l'appel de collecte lit juste.collect(toList())
.Collectors
classe dans Préférences -> Java -> Éditeur -> Assistant de contenu -> Favoris . Après cela, il vous suffit de tapertoLi
au hit Ctr + Space pour que l'IDE remplissetoList
et ajoute l'importation statique.boxed()
partieVous pouvez également utiliser mapToObj () sur un Stream, qui prend une IntFunction et retourne un Stream à valeur objet composé des résultats de l'application de la fonction donnée aux éléments de ce flux.
la source
boxed()
on délègue.Vous pouvez utiliser les collections primitives disponibles dans les collections Eclipse et éviter la boxe.
Remarque: je suis un contributeur aux collections Eclipse.
la source
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Trouvez l'exemple suivant pour trouver le carré de chaque élément int à l'aide de Java 8: -
la source
Vous pouvez utiliser la méthode de collecte:
En fait, c'est presque exactement ce que fait Java lorsque vous appelez .collect (Collectors.toList ()) sur un flux d'objets:
Remarque: Le troisième paramètre n'est requis que si vous souhaitez exécuter une collecte parallèle; pour la collecte séquentielle, fournir uniquement les deux premiers suffira.
la source