欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

一、對(duì)比一下有多簡(jiǎn)單

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

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

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

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

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

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

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

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

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

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

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

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

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

三、元素查找與Optional

從列表中按照順序查找第一個(gè)年齡大于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類代表一個(gè)值存在或者不存在。在java8中引入,這樣就不用返回null了。

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

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

T get() 會(huì)在值存在時(shí)返回值,否則?出一個(gè) NoSuchElement 異常。

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

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

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

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

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

相關(guān)文章

  • SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題解決方法

    SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題解決方法

    這篇文章主要介紹了SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題,為什么注冊(cè)的IP和真實(shí)IP不符合呢,原因是Nacos客戶端在注冊(cè)服務(wù)時(shí)會(huì)從機(jī)器網(wǎng)卡中選擇一個(gè)IP來(lái)注冊(cè),所以,當(dāng)注冊(cè)了的是非真實(shí)IP后,另一臺(tái)機(jī)器調(diào)用時(shí)是不可能調(diào)通的,知道問(wèn)題原因就是解決方法,一起看看吧
    2024-01-01
  • jsoup如何爬取圖片到本地

    jsoup如何爬取圖片到本地

    這篇文章主要為大家詳細(xì)介紹了jsoup如何爬取圖片到本地,jsoup爬取網(wǎng)站信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java使用Collections.sort對(duì)中文進(jìn)行排序方式

    Java使用Collections.sort對(duì)中文進(jìn)行排序方式

    這篇文章主要介紹了Java使用Collections.sort對(duì)中文進(jìn)行排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java利用IO流實(shí)現(xiàn)簡(jiǎn)易的記事本功能

    Java利用IO流實(shí)現(xiàn)簡(jiǎn)易的記事本功能

    本文將利用Java中IO流編寫一個(gè)模擬日記本的程序,通過(guò)在控制臺(tái)輸入指令,實(shí)現(xiàn)在本地新建文件,打開(kāi)日記本和修改日記本等功能,感興趣的可以了解一下
    2022-05-05
  • Spring中@Configuration注解和@Component注解的區(qū)別詳解

    Spring中@Configuration注解和@Component注解的區(qū)別詳解

    這篇文章主要介紹了Spring中@Configuration注解和@Component注解的區(qū)別詳解,@Configuration 和 @Component 到底有何區(qū)別呢?我先通過(guò)如下一個(gè)案例,在不分析源碼的情況下,小伙伴們先來(lái)直觀感受一下這兩個(gè)之間的區(qū)別,需要的朋友可以參考下
    2023-09-09
  • 詳解java 單例模式及方法總結(jié)

    詳解java 單例模式及方法總結(jié)

    這篇文章主要介紹了詳解java 單例模式及方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Spring?IOC容器Bean注解創(chuàng)建對(duì)象組件掃描

    Spring?IOC容器Bean注解創(chuàng)建對(duì)象組件掃描

    這篇文章主要為大家介紹了Spring?IOC容器Bean注解創(chuàng)建對(duì)象組件掃描,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Spring?boot?整合?Redisson實(shí)現(xiàn)分布式鎖并驗(yàn)證功能

    Spring?boot?整合?Redisson實(shí)現(xiàn)分布式鎖并驗(yàn)證功能

    這篇文章主要介紹了Spring?boot?整合?Redisson實(shí)現(xiàn)分布式鎖并驗(yàn)證,redisson是官方推薦的分布式鎖實(shí)現(xiàn)方案,采用redis自身的原子命令和lua腳本來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2022-05-05
  • jedis連接池對(duì)commons-pool的封裝示例詳解

    jedis連接池對(duì)commons-pool的封裝示例詳解

    這篇文章主要為大家介紹了jedis連接池對(duì)commons-pool的封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 關(guān)于Springboot+gateway整合依賴并處理依賴沖突問(wèn)題

    關(guān)于Springboot+gateway整合依賴并處理依賴沖突問(wèn)題

    這篇文章主要介紹了Springboot+gateway整合依賴并處理依賴沖突問(wèn)題,給大家提到了spring boot版本和spring cloud版本,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01

最新評(píng)論