J'ai un objet Merci d'avance p> intestream code> que j'ai limité à 30 éléments et j'aime obtenir une liste
int code> éléments dans le flux. p>
3 Réponses :
Vous pouvez mapper chaque int code> à un
char code> puis collectez-vous dans une liste, cela se traduira par une liste de caractères donnée par leur code ASCII
List<Character> r = IntStream.range(50, 80).mapToObj(a -> (char) a).collect(Collectors.toList());
System.out.println(r); // [2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, =, >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]
Vous ne voulez pas que le OP réponde à votre question en premier?
Vous pouvez même utiliser une référence de méthode pour la distribution si vous voulez être FANCY Char.Class :: Cast Code>.
@Zabuzard Char CODE> est un type primitif mais la méthode
Cast CODE> S'attend à un objet
code>. Donc
Char.Class :: Cast Code> Ne travaille jamais sur quoi que ce soit. Lorsque vous le remplacez par
caractère.Class :: CAST CODE> Il fonctionnerait pour
caractère code>, mais ici,
a -> (code) a code> est Effectuer un
int code> à
Char code> Conversion avant la boxe. Donc, même
caractère.class :: casting code> échouerait car il serait casser le
int code> à
integer code> avant de tenter de le jeter sur
caractère < / code>. En d'autres termes, non, vous ne pouvez pas remplacer cette distribution avec une référence de méthode.
@Holanger assez juste. Je suppose que cela fonctionnerait comme char.class code> est vraiment une chose. Mais tu as raison.
De cette façon, vous pouvez faire cette action.
IntStream intStream = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9); List<Character> characterList = intStream.mapToObj(i -> (char) i).collect(Collectors.toList());
Aussi,
List<Character> collect = IntStream.range(0, 30) .mapToObj(a -> (char) a) .collect(Collectors.toList());
Comment est-ce différent de la réponse existante?
1. Clubbing 2. La gamme. Il n'a mentionné que 30 éléments bien que ce ne soit pas clair, je présume 0 .. 30.
J'ai un objet intrestre que j'ai limité à 30 éléments i> .. Alors, que restant était de mapper et de collecter et d'autres réponses le font aussi.
@ Parrotjack: En réalité, il s'agissait d'un nombre infini d'entiers dans la gamme de 0 à 0xFFFF que j'ai tronqué en appliquant IntStream.limit (30L). J'ai eu une vieille mise en œuvre de la mode qui produisait la liste
Merci à tous pour vos échantillons d'extraits. Il a clarifié l'ambiguïté pour moi, je dois juste trouver une bonne source d'apprentissage de Lambda. Les documents Oracle Java ne sont certainement pas un bon candidat.
Hey! Mais pourquoi
liste code>? S'il vous plaît poster ce que vous avez déjà essayé aussi.
Pourquoi la liste dans le titre? Partager un exemple d'entrée / sortie s'il vous plaît
Pourquoi avez-vous besoin de liste, sont toutes des numéros de distance [0-9]?
Le flux contient Int représentant des points de code Unicode (c'est-à-dire 1578, 1583, etc.) et je voudrais les convertir en leurs caractères respectifs puis créer un objet à chaîne. Bien sûr, je ne répudie pas le fait qu'il pourrait y avoir de meilleurs moyens de créer cet objet à chaîne et je suis ouvert aux idées.