[Einführung in Java] Informationen zur Stream-API

Zweck

Für diejenigen, die gerade mit dem Programmieren einschließlich der Java-Sprache begonnen haben, und für diejenigen, die es bereits gelernt haben, zur Überprüfung Dieses Mal schreibe ich, um mehr über ** Stream API ** zu erfahren.

[Einführung in Java]

Was ist die Stream-API?

Eine von Java8 eingeführte Funktion, eine API, mit der Sie die Elemente der Sammlung bearbeiten können.

Streaming-Sammlung → Zwischenoperation (Datenverarbeitung) → Beendigungsoperation (Verarbeiten von verarbeiteten Daten)

Es wird zum Ablauf der Verarbeitung.

Da es möglich ist, mehrere Zwischenoperationen der Stream-API zu beschreiben, ist es möglich, Prozesse, die kompliziert erscheinen, klar zu beschreiben.

In einigen Fällen wird eine funktionale Schnittstelle als Argument für jede Methode empfangen, und dort wird ein Lambda-Ausdruck verwendet, aber die Erklärung dort wird weggelassen. Siehe ** Über Lambda Expression **.

Beispiel für eine Stream-API

Vergleichen wir mit einem einfachen Beispiel, wie man tatsächlich damit umgeht.

Implementieren Sie zunächst ohne Verwendung der Stream-API.

python


List<String> names = Arrays.asList("Ryo Ose", "Samura Kawachi", "Kikuchi", "Grat", "Nagano", "Jonouchi");
for (int i = 0; i < names.size(); i++) {
  if (names.get(i).length() >= 3) {
    if (names.get(i).contains("Innerhalb")) {
      System.out.println(names.get(i)); //Samura Kawachi Jonouchi
    }
  }
}

Verwenden Sie dann die Stream-API, um einen ähnlichen Prozess zu implementieren.

Implementierung mit Stream API


List<String> names = Arrays.asList("Ryo Ose", "Samura Kawachi", "Kikuchi", "Grat", "Nagano", "Jonouchi");
names.stream()
     .filter(name -> name.length() >= 3)
     .filter(name -> name.contains("Innerhalb"))
     .forEach(name -> System.out.println(name)); //Samura Kawachi Jonouchi

Die Verschachtelung ist nicht tief und leicht zu lesen und einfach zu implementieren.

Extrahieren Sie nur die Elemente, die die Bedingungen mit der Filtermethode der Zwischenoperation erfüllen. Die Elemente werden einzeln mit der forEach-Methode der Beendigungsoperation ausgegeben.

Einführung des Zwischenbetriebs

Früher habe ich Filter als Zwischenoperationsmethode eingeführt, aber ich werde auch einige andere Methoden einführen.

1.map

Diese Methode führt die für jedes Element angegebene Verarbeitung durch.

Kartenmethode


List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
       .map(num -> num * 2) //Verdoppeln Sie jedes Element
       .forEach(num -> System.out.print(num + " ")); // 2 4 6 8 10

2.limit

Diese Methode gibt nur die angegebene Anzahl von Elementen zurück (maxSize).

Limit-Methode


List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
       .limit(3) //Nehmen Sie nur 3 heraus
       .forEach(num -> System.out.print(num + " ")); // 1 2 3 

3.distinct

Diese Methode gibt die Elemente ohne Duplizierung zurück.

unterschiedliche Methode


List<String> names = Arrays.asList("Kubo", "Endo", "rollen", "Kubo", "Okazaki", "Honda", "rollen", "Endo");
names.stream()
     .distinct() //Doppelte Elemente werden entfernt und zurückgegeben
     .forEach(name -> System.out.print(name + " ")); //Kubo Endo Vol. Okazaki Honda

4.sorted

Eine Methode, die die Elemente sortiert.

sortierte Methode


List<Integer> numbers = Arrays.asList(1, 5, 3, 2, 4);
numbers.stream()
       .sorted() //In aufsteigender Reihenfolge sortieren
       .forEach(num -> System.out.print(num + " ")); // 1 2 3 4 5

Sie können auch in absteigender Reihenfolge sortieren, indem Sie die reverseOrder-Methode der Composer-Schnittstelle als Argument der sortierten Methode übergeben.

sortierte Methode


List<Integer> numbers = Arrays.asList(1, 5, 3, 2, 4);
numbers.stream()
       .sorted(Comparator.reverseOrder()) //In absteigender Reihenfolge sortieren
       .forEach(num -> System.out.print(num + " ")); // 5 4 3 2 1

Einführung des Beendigungsvorgangs

Bisher wurde die forEach-Methode als Beendigungsoperationsmethode verwendet, wir werden jedoch auch einige andere Methoden einführen.

1.anyMatch

Eine Methode, die abhängig von der Bedingung einen Booleschen Wert zurückgibt. Gibt true zurück, wenn eines der Elemente der Bedingung entspricht. (Teilweise Spielbeurteilung)

anyMatch-Methode


List<String> fruits = Arrays.asList("banana", "apple", "orange", "pineapple");
boolean result = fruits.stream()
                       .anyMatch(fruit -> fruit.length() >= 7); //Bestimmen Sie, ob es ein Element mit 7 oder mehr Zeichen gibt
System.out.println(result); // true

2.allMatch

Eine Methode, die abhängig von der Bedingung einen Booleschen Wert zurückgibt. Gibt true zurück, wenn alle Elemente die Bedingungen erfüllen. (Alle Match Match)

allMatch-Methode


List<Integer> numbers = Arrays.asList(2, 4, 6, 7, 8, 10);
boolean result = numbers.stream()
                        .allMatch(num -> num % 2 == 0); //Feststellen, ob alle Elemente gerade sind
System.out.println(result); // false

3.noneMatch

Eine Methode, die abhängig von der Bedingung einen Booleschen Wert zurückgibt. Gibt false zurück, wenn eines der Elemente der Bedingung entspricht. (Alle nicht übereinstimmenden Urteile)

noneMatch-Methode


List<String> names = Arrays.asList("Suzuki", "Matsui", "Noshige", "Ikawa", "Kawasaki", "Shinjo", "Mit Darbish");
boolean result = names.stream()
                      .noneMatch(name -> name.length() > 4); //Bestimmen Sie, ob es ein Element mit 4 oder mehr Zeichen gibt
System.out.println(result); // false

Am Ende

Ich fand heraus, dass der Quellcode mithilfe der Stream-API einfacher und leichter zu lesen ist, als die Operationen auf die Auflistungselemente selbst zu schreiben. Es mag zunächst verwirrend sein, aber ich möchte mich mit dem Lambda-Stil daran erinnern.

Referenzseite

** [Oracle Official streamen](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/stream/Stream.html#anyMatch (java.util.function). Prädikat)) ** ** [Java] Kenntnisse, die durch das weitere Schreiben der Stream-API gewonnen wurden **

Recommended Posts

[Einführung in Java] Informationen zur Stream-API
[Java] Einführung in die Stream-API
[Einführung in Java] Über Lambda-Ausdrücke
Java Stream API
[Java] Einführung in Java
Einführung in Java
Java 8 ~ Stream API ~ startet jetzt
[Java] Stream API / Map
Einführung in den Java-Befehl
[Einführung in Java] Informationen zur Typkonvertierung (Besetzung, Promotion)
Java Stream API Spickzettel
Java Stream API in 5 Minuten
[Java] Einführung in den Lambda-Ausdruck
[Java] Stream API - Stream-Beendigungsverarbeitung
Einführung in die EHRbase 2-REST-API
[Java] Stream API - Stream Zwischenverarbeitung
[Java] Stream API Zwischenoperation
[Einführung in Janken (ähnliche) Spiele] Java
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
[Ein Muss für einen Java-Ingenieurlehrling] Verwendung der Stream-API
Über Lambda, Stream, LocalDate von Java8
Einführung in die funktionale Programmierung (Java, Javascript)
Erste Einführung in Mac (Java-Ingenieur)
Ich habe versucht, die Java8 Stream API zu verwenden
[Java] Einführung
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
[Einführung in Java] Informationen zur Ausnahmebehandlung (try-catch-finally, aktivierte Ausnahme, nicht aktivierte Ausnahme, Würfe, Würfe)
Datenverarbeitung mit der Stream-API von Java 8
Einführung in Java zum ersten Mal # 2
Versuchen Sie es mit der Stream-API in Java
Heutzutage Java Lambda Expressions und Stream API
Über das Verfahren, damit Java funktioniert
Einführung in Algorithmen mit Java-Suche (Tiefenprioritätssuche)
[Einführung in Java] So schreiben Sie ein Java-Programm
Probieren Sie verschiedene Java Stream API-Methoden aus (jetzt)
Java 8 startet jetzt ~ Datums- und Uhrzeit-API ~
Anonyme Klasse (mit dem Ziel, Stream-API einzuführen)
Ich habe versucht, die Stream-API zusammenzufassen
Ausgabe des Buches "Einführung in Java"
Einführung in die Überwachung von Java Touching Prometheus
[Einführung in Java] Informationen zu Variablendeklarationen und -typen
Einführung in Algorithmen mit Java --Search (Breitenprioritätssuche)
Einführung in Ruby 2
Über die Java-Schnittstelle
API-Memo streamen
[Java] Informationen zu Java 12-Funktionen
[Java] Über Arrays
Probieren Sie Java 8 Stream aus
Kauen Sie über API
Etwas über Java
Wo ist mit Java?
Informationen zu Java-Funktionen
Einführung in web3j
Über Java-Threads