Java 8 convertir la Chaîne d'entiers à une Liste<Integer>
J'ai une Chaîne de caractères:
String ints = "1, 2, 3";
Je voudrais le convertir en une liste d'entiers:
List<Integer> intList
Je suis en mesure de le convertir en une liste de chaînes de cette façon:
List<String> list = Stream.of("1, 2, 3").collect(Collectors.toList());
Mais pas de liste d'entiers.
Des idées?
Votre dernière ligne de code vous donnera une liste avec exactement une chaîne, avec la valeur
"1, 2, 3"
. Vouliez-vous dire: Stream.of("1", "2", "3")
?OriginalL'auteur Igor | 2016-11-29
Vous devez vous connecter pour publier un commentaire.
Vous devez diviser la chaîne et de procéder à un Flux de sortie de chaque pièces. La méthode
splitAsStream(entrée)
est exactement cela:Elle renvoie une
Stream<String>
de la partie de la chaîne d'entrée, que vous pourrez ensuite la carte à unInteger
et de recueillir dans une liste.Notez que vous pouvez stocker la répétition dans une constante, et de le réutiliser à chaque fois que cela est nécessaire.
", "
), peut-être que cette solution avecsplitAsStream
sera plus rapide que les autres. Ce doit être mesuré.Je préfère cette un sur la mienne. N'étais pas au courant de la
Pattern.splitAsStream()
méthode. Excellent!Vous pouvez utiliser
Pattern.compile(", ", Pattern.LITERAL);
de conseil pour le moteur, il n'y a pas de motif réel de correspondance. Bien sûr, le moteur va trouver lui-même sans le drapeau, mais en spécifiant le drapeau ignore le processus d'analyse du modèle.OriginalL'auteur Tunaki
Expression régulière fractionnement est ce que vous êtes à la recherche pour
Cette habitude de créer une Liste<Integer>
Je recommande toujours d'utiliser
Arrays.stream
si l'entrée est un tableau, c'est à dire quand il n'est pas un vrai varargs invocation. Il est clair que nous diffuser sur un tableau et fonctionne correctement pour les tableaux de types primitifs au lieu de créer un seul élément de flux. Pour ce cas précis, les deux vont faire la même chose.Ouais, c'est pas une mauvaise idée, bien que certaines Api utilisée pour prendre des arguments de type tableau maintenant prendre varargs arguments depuis Java 5, donc, cette distinction est peut-être pas éternelle...
Il y avait une rénovation lorsque varargs ont été introduites avec Java 5, mais ce n'est pas quelque chose arrive encore très souvent. Et, ce faisant
Arrays.asList
un varargs méthode a été considérée comme une erreur de conception, car il est en contradiction avec le but de créer un wrapper autour d'un existant array (par exemple, le tableau peut être modifié par le retour de l'List
). Java 9 est à résoudre ce problème. Là, vous pouvez utiliserList.of(…)
pour créer une liste immuable de taille arbitraire (vrai varargs sémantique) et deArrays.asList(array)
pour l'envelopper d'un tableau dans une mutableList
(encore varargs en raison des contraintes de compatibilité).OriginalL'auteur Lukas Eder
D'abord, diviser la chaîne en un nombre, puis de convertir ces (toujours de chaîne) pour réels les nombres entiers, et enfin les collectionner dans une liste. Vous pouvez faire tout cela en enchaînant les flux d'opérations.
OriginalL'auteur tobias_k
Vous pouvez simplement utiliser la fonction Array asList, puis de le convertir la java8.
N'oubliez pas d'enlever les espaces en blanc.
EDIT:
Désolé je ne savais pas que c'était une chaîne unique, pensé que c'était un tableau de Chaîne de caractères.
OriginalL'auteur tl-photography.at