Java9 studieren (dropWhile, takeWhile und Stream.ofNullable)

Also werde ich den Inhalt des Themas schreiben Dieser wundervolle Beitrag ist so einfach zu verstehen, dass ich das Gefühl habe, nichts mehr zu posten.

Ich habe es vorerst leicht versucht.

		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("Lösche es vorerst ohne nachzudenken");
		list.stream().forEach(System.out::print);


		System.out.println("\Überspringen Sie vor der Ausgabe n2 Zeichen oder mehr");
		list.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);

		System.out.println("\nlist2 ändert dadurch nichts, wenn Sie es auf diesen Typen anwenden, nachdem es mit einem Zeichen begonnen hat");
		list2.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);

Ausführungsergebnis

Lösche es vorerst ohne nachzudenken
AABBCDDEFGH
Überspringen Sie zwei oder mehr Zeichen, bevor Sie sie ausgeben
CDDEFGH
list2 ändert dadurch nichts, wenn Sie es auf diesen Typen anwenden, nachdem es mit einem Zeichen begonnen hat
ABCDDEFGH

Der Punkt ist dropWhile, kein Filter. Das letzte bis ich es selbst schreibe

list2.stream().dropWhile(str -> str.length() >= 2).forEach(System.out::print);

Ich dachte, dass ABCE herauskommen würde, weil es alle Elemente von 2 oder mehr Zeichen entfernt, aber ich fragte mich, was es war, weil das Ergebnis anders war. Da es sich um eine Methode handelt, die list2 von Anfang an liest und überspringt, während zwei oder mehr Zeichen vorhanden sind, sind es im Stadium des ersten Elements A noch nicht zwei oder mehr Zeichen, sodass nichts gelöscht wurde Natürlich, wenn ich jetzt darüber nachdenke.

Die Verwendung ist ähnlich, aber ich habe auch takeWhile ausprobiert.

		System.out.println("\ntakeWhile sieht ähnlich aus");
		list.stream().takeWhile(str -> str.length() >= 2).forEach(System.out::print);

Ausführungsergebnis

takeWhile sieht ähnlich aus
AABB

Der letzte ist diesmal Stream.ofNullable.

		/* Stream.ofNullable Ich werde es tun*/
		List<String> list3 = Arrays.asList("A", "B", null, "DD", "E", "FGH");
		System.out.println("\n Zeichengröße");
		// Stream.Beispiel nicht ofNullable
		try {
			list3.stream().forEach(str -> System.out.println(str.length()));
		} catch (NullPointerException nullpo) {
			System.out.println("Schleimig wie erwartet!");
		}

		// Stream.Beispiel für Nullable (Hinweis, Stream.ofNullable(str)Strom.ofNullable(str.length())Wenn du so etwas machst
		//Es wird mit einem schleimigen Po abfallen. Wenn das Argument von ofNullable NULL ist, wird es einfach übersprungen.
		list3.stream().flatMap(str -> Stream.ofNullable(str)).forEach(str -> System.out.println(str.length()));

Ausführungsergebnis

Ich werde die Schriftgröße löschen
1
1
Schleimig wie erwartet!
1
1
2
1
3

Wenn die Variable, die Sie in forEach verwenden möchten, NULL ist, können Sie sie überspringen, sodass dies praktisch erscheint. Es ist mühsam, flatMaps einzeln zu schreiben, und es ist so einfach zu bedienen ... Dies ist auch ein ziemlich geeignetes Beispiel, aber in Wirklichkeit ist es wahrscheinlich besser, es zu verwenden, wenn der Wert nicht wie im Beispiel des zu Beginn geschriebenen Referenzartikels von Map abgerufen werden kann.

Recommended Posts

Java9 studieren (dropWhile, takeWhile und Stream.ofNullable)
Java studieren ―― 3
Java studieren ―― 9
Java studieren ―― 4
Java studieren -5
Java studieren ―― 1
Java # 0 studieren
Java studieren ―― 8
Java 8 studieren (StaticIF und Standardmethode)
Java studieren ②
Java 8 studieren (String Joiner und Join)
Java studieren ―― 2
Java studieren ①
Java studieren -10
Java9 studieren (jShell)
Java und JavaScript
Getter und Setter (Java)
Java 8 studieren (Sammler / Sammler)
[Java] Thread und ausführbar
Java wahr und falsch
[Java] Vergleich von Zeichenketten und && und ||
Java 8 studieren (siehe Konstruktor)
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
Java studieren ~ Teil 8 ~ Besetzung
timedatectl und Java TimeZone
[Java] Verzweigen und Wiederholen
Java 8 studieren (Lambda-Ausdruck)
[Java] Variablen- und Typtypen
Java (Klasse und Instanz)
[Java] Überladen und überschreiben
Studiere Java # 2 (\ mark and operator)
Java Version 8 und neuere Funktionen
[Java] Unterschied zwischen == und gleich
[Java] Stapelbereich und statischer Bereich
[Java] Generics-Klasse und Generics-Methode
Java-Programmierung (Variablen und Daten)
Java-Ver- und Entschlüsselung PDF
Java und Iterator Teil 1 Externe Iterator Edition
Java if- und switch-Anweisungen
Definition und Instanziierung von Java-Klassen
Apache Hadoop und Java 9 (Teil 1)
[Java] Über String und StringBuilder
[Java] HashCode und gleich Überschreibung
☾ Java / Repeat-Anweisung und Repeat-Steueranweisung
Java-Methoden und Methodenüberladungen
Java Generics T und? Unterschied
Vor- und Nachteile von Java
Java (bedingte Verzweigung und Wiederholung)
Über Java-Paket und Import
[Java] Laden Sie ein Bild hoch und konvertieren Sie es in Base64
C # und Java überschreiben Story
Java abstrakte Methoden und Klassen
Java während und für Anweisungen
Java-Kapselung und Getter und Setter