最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java9新特性Stream流API優(yōu)化與增強(qiáng)

 更新時(shí)間:2022年03月15日 16:52:38   作者:字母哥哥  
這篇文章主要為大家介紹了Java9新特性Stream流API優(yōu)化與增強(qiáng)的用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步,早日升職加薪

我計(jì)劃在后續(xù)的一段時(shí)間內(nèi),寫(xiě)一系列關(guān)于java 9的文章,雖然java 9 不像Java 8或者Java 11那樣的核心java版本,但是還是有很多的特性值得關(guān)注。期待您能關(guān)注我,我將把java 9 寫(xiě)成一系列的文章,大概十篇左右,本文是第6篇。

java9在interface中定義私有方法詳解

java9版本特性資源自動(dòng)關(guān)閉的語(yǔ)法增強(qiáng)

Java9版本新特性同一個(gè)Jar支持多JDK版本運(yùn)行

java9新特性Reactive Stream響應(yīng)式編程 API

java9新特性Collection集合類的增強(qiáng)與優(yōu)化方法示例

Java9新特性Java.util.Optional優(yōu)化與增強(qiáng)解析

Java9新特性Module模塊化編程示例演繹

Java9新特性對(duì)HTTP2協(xié)議支持與非阻塞HTTP API

本文帶大家快速的了解一下在Java 9 種集合類Colleaction子類都發(fā)生了哪些比較有用的變化與增強(qiáng)。

在Java 9中對(duì)Java Util Stream的語(yǔ)法進(jìn)行了優(yōu)化和增強(qiáng),下面我就和大家一起看一下有哪些比較有價(jià)值的使用方法。

1. Stream.takeWhile(Predicate)

在進(jìn)行Stream流的管道數(shù)據(jù)處理的時(shí)候,提供的Predicate條件返回false之后,將跳過(guò)剩余的數(shù)據(jù)元素直接返回。在下面的示例中,一旦Predicate條件!"orange" .equals(s)返回false,則將跳過(guò)其他元素:

 String[] fruits = {"apple", "banana", "orange", "mango", "peach"};
 Stream<String> stream = Arrays.stream(fruits)
                               .takeWhile(s -> !"orange".equals(s));
 stream.forEach(System.out::println);

控制臺(tái)輸出結(jié)果為,依次對(duì)數(shù)組中元素過(guò)濾,到orange元素滿足了!"orange" .equals(s) === false,流式處理不再繼續(xù)直接返回。

 apple
 banana

需要注意的是:對(duì)于無(wú)序Stream,如果存在多個(gè)與提供的Predicate匹配的元素(多個(gè)orange),則此操作返回值是不確定的。

這種方法看上去和Java 8中的Stream.filter()很相似,但是它們的不同之處在于filter()方法只是跳過(guò)了不匹配的元素,然后繼續(xù)進(jìn)行處理。然而takeWhile()方法在存在匹配項(xiàng)之后會(huì)跳過(guò)所有剩余的元素,有點(diǎn)像continue和break的區(qū)別。以下是具有相同流和Predicate的filter()方法示例:

 String[] fruits = {"apple", "banana", "orange", "mango", "peach"};
 Stream<String> stream = Arrays.stream(fruits).filter(s -> !"orange".equals(s));
 stream.forEach(System.out::println);

控制臺(tái)輸出如下,只是把orange過(guò)濾掉了。

 apple
 banana
 mango
 peach

2.Stream.dropWhile(Predicate)

提供的Predicate條件在管道流中返回false之后,此元素后面的所有數(shù)據(jù)元素作為返回值返回。

String[] fruits = {"apple", "banana", "orange", "mango", "peach"};
 Stream<String> stream = Arrays.stream(fruits)
                            .dropWhile(s -> !"orange".equals(s));
 stream.forEach(System.out::println);

在上面示例中,一旦Predicate條件!"orange".equals(s)返回false,管道流中剩余的元素將被接受(不被過(guò)濾),作為返回值返回:

 orange
 mango
 peach

3.Stream Stream.iterate(T,Predicate,UnaryOperator)

一旦Predicate條件返回false,此方法將返回一個(gè)順序流,該順序流將停止迭代操作。T為初始值,迭代操作由UnaryOperator來(lái)提供

 Stream<String> iterate = Stream.iterate("-", 
                                  s -> s.length() < 5,    //Predicate條件
                                  s -> s + "-");   //迭代操作
 iterate.forEach(System.out::println);

控制臺(tái)打印輸出的結(jié)果,只輸出四個(gè)橫杠,到第五個(gè)的時(shí)候停止。這是由Predicate條件決定的。

 -
 --
 ---
 ----

4.Stream Stream.ofNullable(T)

此方法返回一個(gè)包含單個(gè)元素的順序Stream。如果提供的元素為null,則此方法返回空Stream。當(dāng)我們要將非空單個(gè)元素附加到流時(shí),此方法很有用。例如:

 String nullableItem = "peach";
 Stream<String> stream = Stream.of("apple", "banana", "orange");
 Stream<String> stream2 = Stream.concat(stream, Stream.ofNullable(nullableItem));
 stream2.forEach(System.out::println);

控制臺(tái)打印輸出結(jié)果如下:

 apple
 banana
 orange
 peach

5.IntStream,LongStream和DoubleStream方法

下面的這些XxxStream類也具有與Stream類等效的方法(ofNullable()方法除外)。

 IntStream.of(2, 4, 6, 8, 9, 10, 11)
          .takeWhile(i -> i % 2 == 0)
          .forEach(System.out::println);   //2,4,6,8
 IntStream.of(2, 4, 6, 8, 9, 10, 11)
          .dropWhile(i -> i % 2 == 0)
          .forEach(System.out::println);  // 9,10,11
 IntStream.iterate(0, i -> i < 10, i -> i + 1)
          .forEach(System.out::print); // 0123456789

以上就是Java9新特性Stream流API優(yōu)化與增強(qiáng)的詳細(xì)內(nèi)容,更多關(guān)于Java9新特性Stream API增強(qiáng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中的Comparable和Comparator接口

    Java中的Comparable和Comparator接口

    這篇文章主要介紹了Java中的Comparable和Comparator接口,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java代理 jdk動(dòng)態(tài)代理應(yīng)用案列

    java代理 jdk動(dòng)態(tài)代理應(yīng)用案列

    java代理有jdk動(dòng)態(tài)代理、cglib代理,這里只說(shuō)下jdk動(dòng)態(tài)代理,jdk動(dòng)態(tài)代理主要使用的是java反射機(jī)制,需要了解的朋友可以參考下
    2012-11-11
  • 如何在MyBatis中使用XML和注解混合配置過(guò)程

    如何在MyBatis中使用XML和注解混合配置過(guò)程

    這篇文章主要介紹了如何在MyBatis中使用XML和注解混合配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 深入了解Java?File對(duì)象的使用

    深入了解Java?File對(duì)象的使用

    這篇文章主要為大家詳細(xì)介紹了Java中File對(duì)象的使用的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-11-11
  • 詳解spring cloud eureka注冊(cè)中心

    詳解spring cloud eureka注冊(cè)中心

    這篇文章主要介紹了詳解spring cloud eureka注冊(cè)中心,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Spring 校驗(yàn)(validator,JSR-303)簡(jiǎn)單實(shí)現(xiàn)方式

    Spring 校驗(yàn)(validator,JSR-303)簡(jiǎn)單實(shí)現(xiàn)方式

    這篇文章主要介紹了Spring 校驗(yàn)(validator,JSR-303)簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 聊聊spring繼承的問(wèn)題

    聊聊spring繼承的問(wèn)題

    這篇文章主要介紹了spring繼承的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 基于Java和XxlCrawler獲取各城市月度天氣情況實(shí)踐分享

    基于Java和XxlCrawler獲取各城市月度天氣情況實(shí)踐分享

    本文主要講解使用Java開(kāi)發(fā)語(yǔ)言,使用XxlCrawler框架進(jìn)行智能的某城市月度天氣抓取實(shí)踐開(kāi)發(fā),文章首先介紹目標(biāo)網(wǎng)站的相關(guān)頁(yè)面及目標(biāo)數(shù)據(jù)的元素,然后講解在信息獲取過(guò)程的一些參數(shù)配置以及問(wèn)題應(yīng)對(duì),需要的朋友可以參考下
    2024-05-05
  • Java實(shí)現(xiàn)飛機(jī)小游戲

    Java實(shí)現(xiàn)飛機(jī)小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)飛機(jī)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 實(shí)例解析Java的Jackson庫(kù)中的數(shù)據(jù)綁定

    實(shí)例解析Java的Jackson庫(kù)中的數(shù)據(jù)綁定

    這篇文章主要介紹了Java的Jackson庫(kù)中的數(shù)據(jù)綁定,這里分為通常的簡(jiǎn)單數(shù)據(jù)綁定與全數(shù)據(jù)綁定兩種情況來(lái)講,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

阿勒泰市| 霍州市| 涿州市| 青海省| 长武县| 西和县| 滦平县| 大余县| 布尔津县| 隆德县| 淮阳县| 筠连县| 海宁市| 平舆县| 青田县| 鹿泉市| 揭阳市| 巧家县| 夏河县| 横峰县| 南木林县| 靖州| 安吉县| 保山市| 高唐县| 明水县| 平顶山市| 灵寿县| 凌源市| 津市市| 松阳县| 浦东新区| 沁水县| 鲜城| 平武县| 哈尔滨市| 建平县| 通州区| 隆子县| 通城县| 越西县|