Comment convertir int[]
en List<Integer>
Java?
Bien sûr, je suis intéressé par une autre réponse que de le faire en boucle, article par article. Mais s'il n'y a pas d'autre réponse, je choisirai celle-ci comme la meilleure pour montrer que cette fonctionnalité ne fait pas partie de Java.
java
arrays
collections
boxing
autoboxing
pupeno
la source
la source
Réponses:
Il n'y a pas de raccourci pour convertir de
int[]
enList<Integer>
carArrays.asList
ne traite pas de la boxe et créera simplement unList<int[]>
qui n'est pas ce que vous voulez. Vous devez créer une méthode utilitaire.la source
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Ruisseaux
Dans Java 8, vous pouvez le faire
la source
Aussi à partir des bibliothèques de goyaves ... com.google.common.primitives.Ints:
la source
Arrays.asList ne fonctionnera pas comme le prévoient certaines des autres réponses.
Ce code ne créera pas de liste de 10 entiers. Il imprimera 1 , pas 10 :
Cela va créer une liste d'entiers:
Si vous avez déjà le tableau d'ints, il n'y a pas de moyen rapide de convertir, vous êtes mieux avec la boucle.
D'un autre côté, si votre tableau contient des objets, pas des primitives, Arrays.asList fonctionnera:
la source
J'ajouterai une autre réponse avec une méthode différente; pas de boucle mais une classe anonyme qui utilisera les fonctionnalités d'autoboxing:
la source
set
méthode et maintenant je peux même trier le tableau ...Le plus petit morceau de code serait:
d'où vient ArrayUtils commons-lang :)
la source
ArrayUtils
qu'il s'agit d'une grande bibliothèque relative pour une application AndroidArrayUtils.toPrimitive(...)
est la clé.En Java 8 avec stream:
ou avec des collectionneurs
la source
En Java 8:
la source
Si vous utilisez Java 8, nous pouvons utiliser l'API Stream pour le convertir en liste.
Vous pouvez également utiliser IntStream pour convertir également.
Il existe d'autres bibliothèques externes comme la goyave et les apaches communs également disponibles pour la convertir.
à votre santé.
la source
Il vaut également la peine de consulter ce rapport de bogue , qui a été fermé avec la raison "Pas un défaut" et le texte suivant:
"Le contrôle automatique de baies entières n'est pas un comportement spécifié, pour une bonne raison. Il peut être prohibitif pour les baies de grande taille."
la source
essayez cette classe:
cas de test:
la source
Le meilleur coup:
Exemples:
la source
Si vous êtes prêt à utiliser une bibliothèque tierce, cela fonctionnera dans les collections Eclipse :
Remarque: je suis un committer pour les collections Eclipse .
la source
la source
Et ça:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
la source
Voici une solution:
Production:
la source
Voici une autre possibilité, toujours avec Java 8 Streams:
la source
Voici une façon générique de convertir un tableau en ArrayList
Usage
la source
voir ça
la source