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.
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
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);
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