Java 8 Stream中间操作(方法)示例
Java 8 Streams中間操作的完整指南。 所有內置Stream API中間操作(方法)的列表以及示例。
1.概述
在本教程中,我們將學習什么是 Java 8 Stream 中的中間操作 。 所有這些操作都在java.util.stream.Stream包中 。
在上一教程中,我們討論了Java 8 Stream API和Lambda Expressions 。
規則:
Java 8 Stream中間操作返回另一個Stream ,該Stream允許您以查詢的形式調用多個操作。
 
 在調用終端操作之前,流中間操作不會執行。 
 所有的中間操作都是惰性的,因此直到實際需要處理結果時才執行它們。 
在執行管道的終端操作之前,流的遍歷不會開始。
 這是所有Stream中間操作的列表: 
 過濾() 
 地圖() 
 flatMap() 
 不同() 
 sorted() 
 窺視() 
 限制() 
 跳躍( 
我們將在后續文章中看到有關每個操作的示例程序。
2. filter()
 返回由該流的元素組成的流 
 匹配給定的謂詞 。 
句法:
Stream filter?(Predicate predicate)例:
Stream intStream = Stream.of( 1 , 2 , 3 , 4 , 5 ); Stream subStream = intStream.filter(value -> value > 3 ); long count = subStream.count(); System.out.println(count);輸出:
2該程序將Predicate功能接口用作lambda,并檢查數字是否大于3。
3. map()
 返回包含以下內容的流 
 將給定功能應用于此流元素的結果 。 
句法:
Stream map?(Function mapper)例:
// map() Operation Stream strStream = Stream.of( "Welcome" , "To" , "java" , "blog" ); Stream subStream2 = strStream.map(string -> { if (string == "java" ) return "Java-W3schools" ; return string; }); List welomeList = subStream2.collect(Collectors.toList()); System.out.println(welomeList); 在此,map函數采用Function的參數類型。 該功能是一個功能接口,并具有一種方法 
 apply() 。 此方法采用一個值并返回另一個值。 
輸出:
[Welcome, To, Java-W3schools, blog]在此示例中,將單詞“ java”替換為“ Java-W3schools”。
 map()wrpper類型也屬于中間操作類別。 
 mapToDouble(),mapToLong(),mapToInt() 
4. flatMap()
 此平面圖最適合于收藏列表。 我們將顯示帶有兩個列表的示例,以及如何使用它們將它們轉換為單個流 
 flatmap()方法。 
句法:
Stream flatMap?(Function> mapper)例:
示例程序可計算兩個列表中唯一水果名稱的數量。
Stream flatStream = stream.flatMap(list -> list.stream()); //flatStream.forEach(str -> System.out.println(str)); long distinctFruites = flatStream.distinct().count(); System.out.println(distinctFruites);輸出:
6并且在使用Stream“ 流已被操作或關閉 ”時也看到了解決方案中最常見的問題。 取消換行后flatStream.forEach(str-> System.out.println(str)); 此程序將異常java.lang.IllegalStateException 。
類似包裝器類型的flatMap()方法,例如flatMapToInt(),flatMapToLong(),flatMapToDouble() 。
5,distinct()
返回由該流的不同元素組成的流 (根據Object.equals(Object))。
對于有序流,對不同元素的選擇是穩定的(對于重復元素,將保留在遇到順序中首先出現的元素。)對于無序流,則不保證穩定性。
句法:
Stream distinct()例:
// distinct() Operation Stream fruitsStream = Stream.of( "Apple" , "Jack Fruit" , "Water Melon" Stream fruitsStream = Stream.of( "Water Melon" , "Apple" ); Stream distinctStream = fruitsStream.distinct(); distinctStream.forEach(name -> System.out.println(name));輸出:
Apple Jack Fruit Water Melon6. sorted()
 返回由該流的元素組成的流,并根據自然順序排序。 
 如果此流的元素不可比較,則在執行終端操作時可能會引發java.lang.ClassCastException。 
 
 注意 :對于有序流,排序是穩定的。 對于無序流,不保證穩定性。 
 
句法:
Stream sorted()例:
// sort() Operation Stream vegStream = Stream.of( "tomoto" Stream vegStream = Stream.of( "tomoto" , "Green Chilli" , "Pototo" , "Beet root" ); Stream sortedStream = vegStream.sorted(); sortedStream.forEach(name -> System.out.println(name));輸出:
Beet root Green Chilli Pototo tomoto7. peek()
返回由該流的元素組成的流,并在從結果流中消耗元素時對每個元素另外執行提供的操作。
 peek()方法是在Java 8中調試流的最佳方法。eclipse將不支持調試。 
 注意:我們無法預測并行流管道的peek()調用順序。 
句法:
Stream peek?(Consumer action)例:
// peek() Operation Stream.of( "one" , "two" , "three" , "four" ).filter(e -> e.length() > 3 ) .peek(e -> System.out.println( "Filtered value: " + e)).map(String::toUpperCase) .peek(e -> System.out.println( "Mapped value: " + e)).collect(Collectors.toList());對于每次滿足過濾條件的條件,將立即調用peek()方法。 看到輸出,您將更好地理解。
輸出:
Filtered value: three Mapped value: THREE Filtered value: four Mapped value: FOUR8. limit()
返回具有指定大小的流 。 它將截斷流中剩余的元素。
 
 注意: limit()適用于順序流,不能為并行流提供良好的性能結果。 
 
句法:
Stream limit?( long maxSize)例:
程序將流限制為前兩個元素。
Stream.of( "one" , "two" , "three" , "four" ).limit( 2 ).forEach(item -> System.out.println(item));輸出:
one two9. skip()
此方法跳過給定的n個元素,并返回Stream。 當要對列表或流中的最后n條記錄或行執行任何操作時,這是最有用的。
句法:
Stream skip?( long n)例:
程序跳過前兩個元素并打印其余元素。
Stream.of( "one" , "two" , "three" , "four" , "five" ).skip( 2 ).forEach(item -> System.out.println(item));輸出:
three four five10.結論
在本教程中,我們已經了解了什么是流中的中間操作。 中間操作如何在新的Java 8 Streams中工作。
并且還討論了帶有示例程序的所有中間方法的列表。
這篇文章中顯示的所有程序都通過GitHub進行 。
翻譯自: https://www.javacodegeeks.com/2020/04/java-8-stream-intermediate-operations-methods-examples.html
總結
以上是生活随笔為你收集整理的Java 8 Stream中间操作(方法)示例的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 《幻想水浒传》精神续作《百英雄传》TGS
- 下一篇: 人社局是什么单位 人社局是做什么的呢
