日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 8 Stream中间操作(方法)示例

發布時間:2023/12/3 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 Melon

6. 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 tomoto

7. 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: FOUR

8. limit()

返回具有指定大小的流 。 它將截斷流中剩余的元素。


注意: limit()適用于順序流,不能為并行流提供良好的性能結果。

句法:

Stream limit?( long maxSize)

例:

程序將流限制為前兩個元素。

Stream.of( "one" , "two" , "three" , "four" ).limit( 2 ).forEach(item -> System.out.println(item));

輸出:

one two

9. 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 five

10.結論

在本教程中,我們已經了解了什么是流中的中間操作。 中間操作如何在新的Java 8 Streams中工作。

并且還討論了帶有示例程序的所有中間方法的列表。

這篇文章中顯示的所有程序都通過GitHub進行 。

翻譯自: https://www.javacodegeeks.com/2020/04/java-8-stream-intermediate-operations-methods-examples.html

總結

以上是生活随笔為你收集整理的Java 8 Stream中间操作(方法)示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。