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