Conversion de liste Java8 avec Stream map

Nous comparerons la conversion de liste lors de l'utilisation de l'instruction for et lors de l'utilisation de la carte Stream. Utilisez la liste ci-dessous.

stream-map.java


final List<String> months = 
Arrays.asList("January", "February", "March", "April", "May", "June", "July", "Augast", "September", "October", "November", "December");

Faites une liste composée uniquement de la première lettre de chaque élément.

1. Utilisez l'instruction for

Nous déclarons une liste vide pour stocker le premier caractère et le stocker caractère par caractère dans la boucle for.

for.java


final List<String> firstChars = new ArrayList<>();
for (String c : months) {
  firstChars.add(c.substring(0,1));
}
for (String fc : firstChars) {
  System.out.print(fc);
}

La sortie est la suivante. JFMAMJJASOND

2. Utilisez l'instruction forEach

Bien qu'il ait été réécrit en tant que type de fonction, il est nécessaire que le programmeur prépare une liste vide.

forEach.java


final List<String> firstChars = new ArrayList<>();
months.forEach(c -> firstChars.add(c.substring(0,1)));
firstChars.forEach(System.out::print);

3. Utilisez Stream map ()

Il n'y a pas d'étape pour préparer une liste vide, et le résultat de l'extraction du premier caractère de la liste semble être stocké dans la nouvelle liste tel quel. La méthode map () de Stream convertit les entrées contiguës en sorties contiguës.

stream-map.java


final List<String> firstChars = months.stream().map(c -> c.substring(0,1)).collect(Collectors.toList());
firstChars3.forEach(System.out::print);

La méthode map () garantit que la liste des entrées et la liste des sorties ont le même nombre d'éléments, mais pas nécessairement pour les types de données. Si vous souhaitez obtenir le nombre de caractères dans chaque élément, il sera converti du type chaîne de caractères au type numérique et à la sortie.

Ce qui suit ne prépare pas la liste convertie, mais génère directement le contenu de l'élément avec forEach. À ce niveau, il est possible de décrire en une seule ligne.

stream-map2.java


months.stream().map(c -> c.length()).forEach(cnt -> System.out.print(cnt + " "));
//Sortie comme 7 8 5 5 3 4 4 6 9 7 8 8

Recommended Posts

Conversion de liste Java8 avec Stream map
Liste de conversion mutuelle de tableau / liste / flux Java
[Java] API / carte de flux
Conversion Endian avec JAVA
[Java] Conversion de type de liste / type de tableau
Traitement des listes à comprendre avec des images - java8 stream / javaslang-
[Java 8] Suppression en double (et vérification en double) avec Stream
[Java] Stream (filtrer, mapper, forEach, réduire)
[Java] Vérification de l'existence des éléments avec Stream
JAVA (Carte)
Créer une carte de liste avec LazyMap
[Java] Convertir 1 en N liste en carte
Traitement des listes à comprendre avec des images --java8 stream / javaslang --bonus
[Java] Conversion d'un tableau à une liste
Conversion pleine largeur → demi-largeur avec Java String (kana pleine largeur → kana demi-largeur)
Fonction de conversion d'objet de liste immuable (immuable) dans Java8
Conversion de type Java
Liste, ensemble, carte
Mémorandum Java (liste)
Clonez la liste Java.
Tableau / liste / carte
[Java] Comparaison de cartes
Terminaison du flux Java
Java 9 Facultatif :: stream
Rendre la ligne Java Stream agréable avec Eclipse
Installez java avec Homebrew
[Java] Remarque sur les collecteurs de flux
Installez Java avec Ansible
[Java] Génération de flux API-Stream
Flux appris (je veux convertir la liste en carte <Integer, List>)
Méthode de mappage de l'API Stream
Téléchargement confortable avec JAVA
Changer java avec direnv
A propos de la liste des baies Java
Enum Reverse Map Java
Pratique de l'API Java8 Stream
Bibliothèque de cartes bidirectionnelles Java
Téléchargement Java avec Ansible
Raclons avec Java! !!
Premiers pas avec les anciens ingénieurs Java (Stream + Lambda)
Construire Java avec Wercker
[Mémo] Liste liée Java
Sortie FizzBuzz avec flux
Résumé approximatif du flux Java8
[Java] Conversion de type de date
Comment vérifier les nombres entiers avec ruby
Créer une carte de liste avec LazyMap
Vérifier quand moss avec SimpleDateFormat parse
Conversion de liste Java8 avec Stream map
Seul le flux de niveau supérieur peut être parallélisé avec Java Stream.
Comment gérer les exceptions froidement avec Java 8 Stream ou en option
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
Je veux faire une liste avec kotlin et java!
Repenser les modèles de conception avec les expressions lambda Java8 et Stream --Builder pattern -
À propos du comportement lors de la création d'un mappage de fichiers avec Java
Pour les débutants Java: List, Map, Iterator / Array ... Comment convertir?
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream