[JAVA] API-Memo streamen

Eine der in Java 8 hinzugefügten APIs, mit denen Sie funktionale Programmierung wie Lambda-Ausdrücke schreiben können.

Stream kann Sammlungen, Listen usw. an einem Ort sammeln und verarbeiten. Zu diesem Zeitpunkt, wenn die Zwischenverarbeitung und die Beendigungsverarbeitung abgeschlossen sind, wird das verarbeitete Ergebnis zurückgegeben, so dass die Daten für sich selbst einfacher verarbeitet werden können.

Stream Beispiel

Im Elastic Search-Quellcode

this.registry = new NamedXContentRegistry(
    Stream.of(getDefaultNamedXContents().stream(), getProvidedNamedXContents().stream(), namedXContentEntries.stream())
        .flatMap(Function.identity()).collect(toList()));   

Als ich mir den Code von ansah, dachte ich, dass dies irgendwie so etwas wie eine Liste sammelt und sie schließlich als Liste zurückgibt, aber ich verstehe es etwas tiefer für das Studium Ich habe einige Nachforschungen angestellt, um es zu bekommen.

stream() Methoden im Listentyp usw. Eine Methode, die einen Stream-Typ erstellt, damit er mit einem Stream-Typ verwendet werden kann.

Arrays.asList("one", "two", "three").stream();
Arrays.asList(new Moment(), new Moment(), new Moment(), new Moment()).stream();

Stream.of() Eine Methode, mit der Sie eine Stream-Typ-Liste gleichzeitig zusammenstellen können.

List<String> numbers = Arrays.asList("one", "two", "three");
Stream.of(numbers.stream(), numbers.stream(), numbers.stream());

flatMap() Eine Methode zum Kombinieren einer Liste zu einer einzelnen Liste. Sie können den Prozess mit forEach usw. in dieser Methode beschreiben.

Stream.of(list1.stream(), list1.stream(), list1.stream())
    .flatMap(t -> t).forEach(t -> System.out.println(t));  // "one", "two", "three", "one", "two", "three", "one", "two", "three"

Stream.of(list1.stream(), list1.stream(), list1.stream())
    .forEach(t -> System.out.println(t));  // reference values

Function.identity() Eine Methode, die den Wert unverändert zurückgibt. Zuerst habe ich mich gefragt, warum es so etwas gibt, aber es gab viele Gründe, warum es einfacher zu lesen ist, wenn ich so etwas wie "t-> t" wie eine Methode oder "Function :: identity" schreiben kann.

Stream.of(numbers.stream(), numbers.stream(), numbers.stream())
    .flatMap(Funcion.indentity());

Dieser Stackoverflow war leicht zu verstehen.

collect() Eine Methode, die am Ende der Verarbeitung des Streams als Collectors-Typ zurückgegeben wird. Sie können entscheiden, welcher Typ (Liste usw.) in dieser Methode zurückgegeben werden soll.

Stream.of(numbers.stream(), numbers.stream(), numbers.stream())
    .flatMap(Funcion.indentity())
    .collect(~);

Collectors.toList() Eine Methode, die einen Collectors-Typ als Listentyp zurückgibt. Dies kann innerhalb der Erfassungsmethode verwendet werden.

Stream.of(numbers.stream(), numbers.stream(), numbers.stream())
    .flatMap(Funcion.indentity())
    .collect(toList());

Beschreibung des ersten Codes

this.registry = new NamedXContentRegistry(
    Stream.of(getDefaultNamedXContents().stream(), getProvidedNamedXContents().stream(), namedXContentEntries.stream())
        .flatMap(Function.identity()).collect(toList()));     

Zurück zum Anfang: Der obige Code macht den Listentyp zu einem Stream-Typ, fügt sie dann in "Stream.of" zusammen und verwendet "flatMap", um den Inhalt der Liste zu vereinheitlichen. Danach schafft es collect in den Collectors-Typ, und toList schafft es schließlich in den List-Typ und gibt ihn zurück (long).

Die Sammlung war möglicherweise besser als der Ausdruck der Liste.

Es ist eine Pointe ...

Eigentlich habe ich die Site, die ich gemacht habe, in Qiita gepostet.

Ich weiß es in Zukunft nicht, aber ich werde es Qiita geben.

Recommended Posts

API-Memo streamen
Memo Stream
Java Stream API
Grundlagen der Stream-API
Stream-API (Collectors-Klasse)
[Java] Stream API / Map
Stream-API-Zuordnungsmethode
Java Stream API Spickzettel
Java Stream API in 5 Minuten
[Java] Stream API - Stream-Beendigungsverarbeitung
[Java] Stream API - Stream Zwischenverarbeitung
[Java] Einführung in die Stream-API
[Java] Stream API Zwischenoperation
[java8] Um die Stream-API zu verstehen
[Einführung in Java] Informationen zur Stream-API
Niconico API-Memo (Mal sehen und nachahmen)
Erstellen Sie eine einfach zu erweiternde Stream-API-Alternative
Ich habe versucht, die Java8 Stream API zu verwenden
Memo zur Herstellung von Niconico API (Materialien)
Java 8 ~ Stream API ~ startet jetzt
Ganzzahliges Memo
Rails API
Aufruf API [Aufruf]
Datenverarbeitung mit der Stream-API von Java 8
Lombok Memo
Versuchen Sie es mit der Stream-API in Java
Dockerfile-Memo
Heutzutage Java Lambda Expressions und Stream API
Iterator Memo
Corretto Memo
Ogawa spielen
Java-Memo
AWS-Memo
Probieren Sie verschiedene Java Stream API-Methoden aus (jetzt)
Stream-Beendigungsprozess
Anonyme Klasse (mit dem Ziel, Stream-API einzuführen)
Ich habe versucht, die Stream-API zusammenzufassen
Hinweise zur Stream-API und zu SQL von Java
Dcokerfile Memo
[Für Anfänger] Über Lambda-Ausdrücke und Stream-API