Heim  >  Artikel  >  Java  >  Beispielanalyse des Stream-Datenflusses in Java8

Beispielanalyse des Stream-Datenflusses in Java8

黄舟
黄舟Original
2017-10-16 10:02:261415Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn