Étudier java9 (dropWhile, takeWhile et Stream.ofNullable)

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

Étudier java9 (dropWhile, takeWhile et Stream.ofNullable)
Étudier Java ―― 3
Étudier Java ―― 9
Étudier Java ―― 4
Étudier Java -5
Étudier Java ―― 1
Étudier Java # 0
Étudier Java ―― 8
Etudier Java 8 (méthode StaticIF et Default)
Étudier Java ②
Etudier Java 8 (String Joiner et Join)
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
Étudier java9 (jShell)
Java et JavaScript
Getter et Setter (Java)
Etudier Java 8 (Collector / Collectors)
[Java] Thread et exécutable
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
Etudier Java 8 (voir constructeur)
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
Étudier Java ~ Partie 8 ~ Cast
timedatectl et Java TimeZone
[Java] Branchement et répétition
Etudier Java 8 (expression lambda)
[Java] Types de variables et types
java (classe et instance)
[Java] Surcharge et remplacement
Etudier Java # 2 (\ marque et opérateur)
Java version 8 et fonctionnalités ultérieures
[Java] Différence entre == et égal
[Java] Zone de pile et zone statique
[Java] Classe générique et méthode générique
Programmation Java (variables et données)
Cryptage et décryptage Java PDF
Java et Iterator Part 1 External Iterator Edition
Instructions Java if et switch
Définition et instanciation de classe Java
Apache Hadoop et Java 9 (partie 1)
[Java] À propos de String et StringBuilder
[Java] HashCode et remplacement égal
☾ Instruction Java / Repeat et instruction de contrôle de répétition
Méthodes Java et surcharges de méthodes
java Generics T et? Différence
Avantages et inconvénients de Java
java (branchement conditionnel et répétition)
À propos du package Java et de l'importation
[Java] Téléchargez une image et convertissez-la en Base64
Histoire de remplacement C # et Java
Méthodes et classes abstraites Java
Instructions Java while et for
Encapsulation Java et getters et setters