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

java理論基礎(chǔ)Stream元素的匹配與查找

 更新時間:2022年03月16日 14:32:15   作者:字母哥哥  
這篇文章主要為大家介紹了java理論基礎(chǔ)Stream元素的匹配與查找方法的示例說明解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

在我們對數(shù)組或者集合類進(jìn)行操作的時候,經(jīng)常會遇到這樣的需求,比如:

  • 是否包含某一個“匹配規(guī)則”的元素
  • 是否所有的元素都符合某一個“匹配規(guī)則”
  • 是否所有元素都不符合某一個“匹配規(guī)則”
  • 查找第一個符合“匹配規(guī)則”的元素
  • 查找任意一個符合“匹配規(guī)則”的元素

這些需求如果用for循環(huán)去寫的話,還是比較麻煩的,需要使用到for循環(huán)和break!本節(jié)就介紹一個如何用Stream API來實現(xiàn)“查找與匹配”。

一、對比一下有多簡單

employees是10個員工對象組成的List,在前面的章節(jié)中我們已經(jīng)用過多次,這里不再列出代碼。

如果我們不用Stream API實現(xiàn),查找員工列表中是否包含年齡大于70的員工?代碼如下:

boolean isExistAgeThan70 = false;
for(Employee employee:employees){
  if(employee.getAge() > 70){
    isExistAgeThan70 = true;
    break;
  }
}

如果我們使用Stream API就是下面的一行代碼,其中使用到了我們之前學(xué)過的"謂詞邏輯"。

boolean isExistAgeThan70 = employees.stream().anyMatch(Employee.ageGreaterThan70);

將謂詞邏輯換成lambda表達(dá)式也可以,代碼如下:

boolean isExistAgeThan72 = employees.stream().anyMatch(e -> e.getAge() > 72);

所以,我們介紹了第一個匹配規(guī)則函數(shù):anyMatch,判斷Stream流中是否包含某一個“匹配規(guī)則”的元素。這個匹配規(guī)則可以是lambda表達(dá)式或者謂詞。

二、其他匹配規(guī)則函數(shù)介紹

是否所有員工的年齡都大于10歲?allMatch匹配規(guī)則函數(shù):判斷是夠Stream流中的所有元素都符合某一個"匹配規(guī)則"。

boolean isExistAgeThan10 = employees.stream().allMatch(e -> e.getAge() > 10);

是否不存在小于18歲的員工?noneMatch匹配規(guī)則函數(shù):判斷是否Stream流中的所有元素都不符合某一個"匹配規(guī)則"。

boolean isExistAgeLess18 = employees.stream().noneMatch(e -> e.getAge() < 18);

三、元素查找與Optional

從列表中按照順序查找第一個年齡大于40的員工。

Optional<Employee> employeeOptional
        =  employees.stream().filter(e -> e.getAge() > 40).findFirst();
System.out.println(employeeOptional.get());

打印結(jié)果

Employee(id=3, age=43, gender=M, firstName=Ricky, lastName=Martin)

Optional類代表一個值存在或者不存在。在java8中引入,這樣就不用返回null了。

isPresent() 將在 Optional 包含值的時候返回 true , 否則返回 false 。

ifPresent(Consumer block) 會在值存在的時候執(zhí)行給定的代碼塊。我們在第3章 介紹了 Consumer 函數(shù)式接口;它讓你傳遞一個接收 T 類型參數(shù),并返回 void 的Lambda 表達(dá)式。

T get() 會在值存在時返回值,否則?出一個 NoSuchElement 異常。

T orElse(T other) 會在值存在時返回值,否則返回一個默認(rèn)值。

關(guān)于Optinal的各種函數(shù)用法請觀看視頻!B站觀看地址

findFirst用于查找第一個符合“匹配規(guī)則”的元素,返回值為Optional

findAny用于查找任意一個符合“匹配規(guī)則”的元素,返回值為Optional

以上就是java理論基礎(chǔ)Stream元素的匹配與查找的詳細(xì)內(nèi)容,更多關(guān)于java Stream元素匹配與查找的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 沒有外網(wǎng)IDEA離線使用maven倉庫的方法

    沒有外網(wǎng)IDEA離線使用maven倉庫的方法

    這篇文章主要介紹了沒有外網(wǎng),IDEA如何離線使用maven倉庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Spring Aware源碼設(shè)計示例解析

    Spring Aware源碼設(shè)計示例解析

    這篇文章主要為大家介紹了Spring Aware源碼設(shè)計示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 一篇文章搞定Struts2的類型轉(zhuǎn)換

    一篇文章搞定Struts2的類型轉(zhuǎn)換

    這篇文章主要介紹了關(guān)于Struts2類型轉(zhuǎn)換的相關(guān)資料,文中主要介紹了Struts2的類型轉(zhuǎn)換器和自定義類型轉(zhuǎn)換器的實現(xiàn),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明

    在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明

    這篇文章主要介紹了在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • java 學(xué)習(xí)筆記(入門篇)_java的基礎(chǔ)語法

    java 學(xué)習(xí)筆記(入門篇)_java的基礎(chǔ)語法

    從基礎(chǔ)語法開始,這個語法你也可以理解為英語或是漢語里面的語法,只不過大家各有各的特點和區(qū)別;那么在學(xué)習(xí)的過程中我們就要不斷的積累重要的類和方法,這樣寫程序就會方便快捷了,下面就開始學(xué)習(xí)java的基礎(chǔ)語法
    2013-01-01
  • 利用javadoc注釋自動生成Swagger注解

    利用javadoc注釋自動生成Swagger注解

    由于現(xiàn)在controller方法上面沒有swagger注解,只能拿到接口url地址,無法獲得接口功能描述,所以本文為大家介紹一下如何利用javadoc注釋自動生成Swagger注解,感興趣的可以了解下
    2023-08-08
  • java實現(xiàn)頁面置換算法

    java實現(xiàn)頁面置換算法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)頁面置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Java中ThreadLocal使用原理及Synchronized區(qū)別

    Java中ThreadLocal使用原理及Synchronized區(qū)別

    ThreadLocal叫做線程變量,本文詳細(xì)的介紹了ThreadLocal使用原理及Synchronized區(qū)別,有需要的朋友可以參考一下,希望對你有所幫助。
    2023-05-05
  • SpringBoot整合jasypt加密配置文件敏感信息

    SpringBoot整合jasypt加密配置文件敏感信息

    在項目中我們需要對配置文件的一些敏感信息進(jìn)行加密處理,比如數(shù)據(jù)庫賬戶密碼,避免直接暴露出來,這種場景常常用于生產(chǎn)環(huán)境,我們不想讓開發(fā)人員知道生產(chǎn)庫的密碼,有運(yùn)維人員統(tǒng)一管理,所以本文給大家介紹了SpringBoot整合jasypt加密配置文件敏感信息
    2024-06-06
  • Logback動態(tài)修改日志級別的方法

    Logback動態(tài)修改日志級別的方法

    這篇文章主要介紹了Logback動態(tài)修改日志級別的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

渝北区| 广平县| 吴忠市| 大同市| 永顺县| 霍林郭勒市| 新建县| 青海省| 伊川县| 前郭尔| 洪湖市| 镇宁| 封开县| 法库县| 含山县| 上杭县| 嘉定区| 射洪县| 佛学| 临夏市| 呼玛县| 台中县| 临城县| 彭水| 南皮县| 林周县| 山东省| 宿松县| 连城县| 育儿| 乌拉特中旗| 伊春市| 永平县| 信阳市| 论坛| 义乌市| 亚东县| 桂阳县| 荆门市| 富平县| 湛江市|