Stream bietet auf intuitive Weise eine High-Level-Abstraktion für Java-Mengenoperationen und -Ausdrücke, ähnlich wie das Abfragen von Daten aus einer Datenbank mithilfe von SQL-Anweisungen. Als nächstes werde ich in diesem Artikel das Wissen über den Stream-Datenfluss in Java8 mit Ihnen teilen. Interessierte Freunde sollten einen Blick darauf werfen
Stream ist eine in Java8 eingeführte API, die stark Lambda-Ausdrücke verwendet. Stream bietet auf intuitive Weise eine High-Level-Abstraktion für Java-Mengenoperationen und -Ausdrücke, ähnlich der Verwendung von SQL-Anweisungen zum Abfragen von Daten aus einer Datenbank. Intuition bedeutet, dass sich Entwickler beim Schreiben von Code nur auf das gewünschte Ergebnis konzentrieren müssen und nicht auf den konkreten Weg, das Ergebnis zu erzielen. In diesem Kapitel stellen wir vor, warum wir eine neue Datenverarbeitungs-API benötigen, welche Unterschiede zwischen Collection und Stream bestehen und wie wir die StreamAPI auf unsere Codierung anwenden.
Duplikate Elemente filtern
Die Stream-Schnittstelle unterstützt die eindeutige Methode, Es gibt einen Stream von Elementen zurück (implementiert gemäß dem HashCode und entspricht den Methoden der vom Stream generierten Elemente).
Der folgende Code filtert beispielsweise alle geraden Zahlen in der Liste heraus und stellt sicher, dass keine Duplikate vorhanden sind.
List<Dish> dishes = Dish.menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList());
Überspringen Sie die angegebene Anzahl von Elementen
Stream unterstützt die Skip(n)-Methode , Gibt einen Stream zurück, bei dem die ersten n Elemente verworfen werden. Wenn der Stream weniger als n Elemente enthält, wird ein leerer Stream zurückgegeben. limit(n) und skip(n) ergänzen sich
List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回 .collect(Collectors.toList()); dishSkip.forEach(System.out::println);
Kartenoperation
Stream unterstützt die Kartenmethode, die eine Funktion als Parameter akzeptiert. Diese Funktion wird auf jedes Element angewendet und ordnet es einem neuen Element zu
List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());
Summe der Elemente
List<Integer> numbers = Arrays.asList(3,4,5,1,2); int sum1 = numbers.stream().reduce(0,(a, b) -> a + b); System.out.println(sum1); int sum2 = numbers.stream().reduce(0,Integer::sum); System.out.println(sum2);
Maximalwert
int max = numbers.stream().reduce(0,Integer::max); System.out.println(max);
Minimalwert
//reduce不接受初始值,返回一个Optional对象(考虑流中没有任何元素的情况) Optional<Integer> min = numbers.stream().reduce(Integer::min); min.ifPresent(System.out::println);
Zusammenfassung
Das obige ist der detaillierte Inhalt vonBeispielanalyse des Stream-Datenflusses in Java8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!