Alors je vais écrire le contenu du sujet Ce merveilleux article est si facile à comprendre que j'ai l'impression que je ne publierai plus rien.
Je l'ai essayé légèrement pour le moment.
List<String> list = Arrays.asList("AA", "BB", "C", "DD", "E", "FGH");
List<String> list2 = Arrays.asList("A", "B", "C", "DD", "E", "FGH");
System.out.println("Pour le moment, éteignez-le sans réfléchir");
list.stream().forEach(System.out::print);
System.out.println("\Sautez n2 caractères ou plus avant d'émettre");
list.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);
System.out.println("\nlist2 ne change rien en conséquence si vous l'appliquez à ce gars après qu'il commence par un caractère");
list2.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);
Résultat d'exécution
Pour le moment, éteignez-le sans réfléchir
AABBCDDEFGH
Sautez deux caractères ou plus avant d'émettre
CDDEFGH
list2 ne change rien en conséquence si vous l'appliquez à ce type après qu'il commence par un caractère
ABCDDEFGH
Le point est dropWhile, pas un filtre. Le dernier jusqu'à ce que je l'écrive moi-même
list2.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);
Je pensais qu'ABCE sortirait parce qu'il supprime tous les éléments de 2 caractères ou plus, mais je me suis demandé ce que c'était parce que le résultat était différent. Puisqu'il s'agit d'une méthode qui lit list2 depuis le début et l'ignore tant qu'il y a deux caractères ou plus, ce n'est pas déjà deux caractères ou plus au stade du premier élément A, donc rien n'a été abandonné Naturel quand j'y pense maintenant.
L'utilisation est similaire, mais j'ai également essayé takeWhile.
System.out.println("\ntakeWhile semble similaire");
list.stream().takeWhile(str -> str.length() >= 2).forEach(System.out::print);
Résultat d'exécution
takeWhile semble similaire
AABB
Le dernier cette fois est Stream.ofNullable.
/* Stream.ofNullable je le ferai*/
List<String> list3 = Arrays.asList("A", "B", null, "DD", "E", "FGH");
System.out.println("\n taille de caractère");
// Stream.Exemple not ofNullable
try {
list3.stream().forEach(str -> System.out.println(str.length()));
} catch (NullPointerException nullpo) {
System.out.println("Visqueux comme prévu!");
}
// Stream.Exemple de ofNullable (Note, Stream.ofNullable(str)Courant.ofNullable(str.length())Si tu fais quelque chose comme ça
//Il tombera avec un po visqueux. Si l'argument de ofNullable est NULL, il est simplement ignoré.
list3.stream().flatMap(str -> Stream.ofNullable(str)).forEach(str -> System.out.println(str.length()));
Résultat d'exécution
Je vais mettre la taille de la police
1
1
Visqueux comme prévu!
1
1
2
1
3
Si la variable que vous souhaitez utiliser dans forEach est NULL, vous pouvez l'ignorer, cela semble donc pratique. C'est un problème d'écrire des flatMaps un par un, et c'est tellement facile à utiliser ... C'est aussi un exemple assez approprié, mais en réalité, il vaut probablement mieux l'utiliser lorsque la valeur ne peut pas être obtenue à partir de Map comme dans l'exemple de l'article de référence rédigé au début.
Recommended Posts