[JAVA] Grundlagen der Stream-API

Einführung

Was ist die Stream-API?

-API für die Verarbeitung eines in SE8 hinzugefügten Datensatzes. Der Hauptzweck ist die Unterstützung der Parallelverarbeitung. Die Verwendung der Stream-API erleichtert den Wechsel von der sequentiellen zur parallelen Verarbeitung.

-Die Schnittstelle unter dem Paket java.util.stream, die sich von dem im Paket java.io verwendeten Stream unterscheidet.

-Das Paket java.util.stream basiert auf der BaseStream-Schnittstelle und besteht aus einer Stream-Schnittstelle zur Behandlung von Referenztypen und drei Schnittstellen zur Behandlung primitiver Typen.

-Stream wird basierend auf einem Datensatz wie List oder Map generiert und das Ergebnis wird durch Ausführen von 0 oder mehr Zwischenoperationen und 1 Beendigungsoperation erhalten.

Mehr Details

Java (tm) Platform Standard Edition 8-Paket java.util.stream Einführung in Java Stream API-Basic Grobe Zusammenfassung des Java8-Streams

Generieren

Referenztyp Stream

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();

Primitiver Stream

IntStream intStream = IntStream.of(1, 2, 3, 4, 5);

Aus dem Array

int[] array = { 1, 2, 3, 4, 5 };
IntStream intStream = Arrays.stream(array);

Geben Sie den Bereich an

IntStream intStream = IntStream.range(1, 5);

Aus Datei

Path path = Paths.get("D:\\hoge.txt");
Stream<String> fileStream = Files.lines(path)

Die einfachste Stream-Operation

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println);

Erzeugt einen Stream vom Typ Integer und führt die Standardausgabeverarbeitung mit 0 Zwischenoperationen und 1 Beendigungsoperation aus. forEach ist eine Beendigungsoperation. Der Beendigungsvorgang wird später beschrieben. Grundsätzlich wird dies in Kombination mit einer beliebigen Anzahl verschiedener Zwischenoperationen und einer der gleichen verschiedenen Terminierungsoperationen verwendet.

Mehr Details

Versuchen Sie, Text in die Java 8 Stream API (Generation) zu streamen

Zwischenbetrieb

Filtern

Stream<String> stream = Stream.of("A", "B", "A", "B", "B", "A");
Predicate<String> isA = "A"::equals;
stream.filter(isA).forEach(System.out::println);

Bild der Ausdünnung Falsch mit Prädikattyp isHogeHoge dazwischen. Prädikat ist eine funktionale Schnittstelle. Die Funktionsschnittstelle ist wie folgt. Grundlegende Funktionsschnittstelle, die in 3 Minuten verstanden werden kann

Kartierung

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Function<Integer, Integer> toDouble = param -> param * 2;
stream.map(toDouble).forEach(System.out::println);

Gibt einen Stream mit dem entsprechenden Wert zurück, wobei jedes Element des Streams als Schlüssel verwendet wird. Kurz gesagt, es ist wie eine Konvertierungsverarbeitung. Das Beispiel verwendete Funktion zur Verdeutlichung, aber in diesem Fall ist Unary Operator intelligent. Der Lambda-Ausdruck ist wie folgt. Zusammenfassung der Java8-Lambda-Grammatikerweiterung Bis die Implementierung der Schnittstelle zu Lambda wird

Sortieren

Stream<Integer> stream = Stream.of(3, 2, 1, 5, 4);
Comparator<Integer> comparator = Comparator.reverseOrder();
stream.sorted(comparator).forEach(System.out::println);

Geben Sie die Reihenfolge an, indem Sie einen Vergleicher für sortiert angeben. Im Folgenden geht es um den Komparator. (o1, o2) -> o1 --o2 Stoppt Zauber nicht mehr! - Verwendung von Composer in Java 8

Kündigungsoperation

passend

Stream<String> stream = Stream.of("George", "John", "Ringo", "Paul");
Predicate<String> isRingo = "Ringo"::equals;
boolean isMatch = stream.anyMatch(isRingo);

Es gibt auch Variationen wie allMatch und noneMatch.

Anzahl

Stream<String> countSt = Stream.of("George", "John", "Ringo", "Paul");
long result = countSt.count();

die Ermäßigung

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
BinaryOperator<Integer> sum = Integer::sum;
Optional<Integer> result = stream.reduce(sum);

Verarbeiten Sie das Ergebnis zu einem einzigen Wert, z. B. Faltung. Der Rückgabewert ist Optional. Das Folgende ist optional. Java 8 "Optional" ~ Wie man in Zukunft mit Null umgeht ~

Variable Reduzierung

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
List<Integer> resultList = stream.collect(Collectors.toCollection(ArrayList::new));
resultList.forEach(System.out::print);

In eine Menge wie ArrayList verarbeiten.

Mehr Details

Ich habe versucht, den Text in die Java 8-Stream-API zu streamen (Beendigungsoperation) Informationen zur Reduzierung des Java8-Streams

Parallelverarbeitung

Stream<String> stream= Stream.of("A", "B", "C", "D", "E", "F");
stream.parallel().forEach(param -> System.out.println(param + " thread-id: " + Thread.currentThread().getId()));

Verwenden Sie zum Zeitpunkt der Generierung einfach pararelStream () oder beißen Sie parallel () in der Zwischenoperation, und es wird parallel verarbeitet.

Mehr Details

Beginnen wir jetzt mit der parallelen Programmierung Informationen zur ordnungsgemäßen Verwendung von Stream und Parallel Stream in Java 8 Diskussion über Stream und ParallelStream Wie unterschiedlich ist die Leistung jedes Java-Stils? Ich habe die Messungen verglichen. Stream and Loop

Ich kann keine Parallelverarbeitung schreiben, daher werde ich sie nicht eingehend berühren.

Recommended Posts

Grundlagen der Stream-API
API-Memo streamen
Java Stream API
Stream-API (Collectors-Klasse)
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
[Java11] Stream Usage Summary -Basics-
[Java] Stream API Zwischenoperation
[java8] Um die Stream-API zu verstehen
[Einführung in Java] Informationen zur Stream-API
Erstellen Sie eine einfach zu erweiternde Stream-API-Alternative
Ich habe versucht, die Java8 Stream API zu verwenden
Java 8 ~ Stream API ~ startet jetzt
Rails Grundlagen
Rails API
Ruby-Grundlagen
Datenverarbeitung mit der Stream-API von Java 8
Fragmentgrundlagen
Versuchen Sie es mit der Stream-API in Java
Heutzutage Java Lambda Expressions und Stream API
Docker-Grundlagen
ViewPager-Grundlagen
Ogawa spielen
Java-Grundlagen
Java-Grundlagen
Stream-Beendigungsprozess
Anonyme Klasse (mit dem Ziel, Stream-API einzuführen)
Ich habe versucht, die Stream-API zusammenzufassen
JavaScript-Grundlagen
Hinweise zur Stream-API und zu SQL von Java
JPA-Grundlagen 2
Java-Grundlagen
RecyclerView-Grundlagen
Memo Stream
[Für Anfänger] Über Lambda-Ausdrücke und Stream-API