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

如何在java 8 map中使用stream

 更新時間:2020年04月24日 09:23:44   作者:flydean程序那些事  
這篇文章主要介紹了如何在java 8 map中使用stream,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

簡介

Map是java中非常常用的一個集合類型,我們通常也需要去遍歷Map去獲取某些值,java 8引入了Stream的概念,那么我們怎么在Map中使用Stream呢?

基本概念

Map有key,value還有表示key,value整體的Entry。

創(chuàng)建一個Map:

Map<String, String> someMap = new HashMap<>();

獲取Map的entrySet:

Set<Map.Entry<String, String>> entries = someMap.entrySet();

獲取map的key:

Set<String> keySet = someMap.keySet();

獲取map的value:

Collection<String> values = someMap.values();

上面我們可以看到有這樣幾個集合:Map,Set,Collection。

除了Map沒有stream,其他兩個都有stream方法:

Stream<Map.Entry<String, String>> entriesStream = entries.stream();
Stream<String> valuesStream = values.stream();
Stream<String> keysStream = keySet.stream();

我們可以通過其他幾個stream來遍歷map。

使用Stream獲取map的key

我們先給map添加幾個值:

someMap.put("jack","20");
someMap.put("bill","35");

上面我們添加了name和age字段。

如果我們想查找age=20的key,則可以這樣做:

Optional<String> optionalName = someMap.entrySet().stream()
        .filter(e -> "20".equals(e.getValue()))
        .map(Map.Entry::getKey)
        .findFirst();
    log.info(optionalName.get());

因為返回的是Optional,如果值不存在的情況下,我們也可以處理:

optionalName = someMap.entrySet().stream()
        .filter(e -> "Non ages".equals(e.getValue()))
        .map(Map.Entry::getKey).findFirst();

    log.info("{}",optionalName.isPresent());

上面的例子我們通過調(diào)用isPresent來判斷age是否存在。

如果有多個值,我們可以這樣寫:

someMap.put("alice","20");
    List<String> listnames = someMap.entrySet().stream()
        .filter(e -> e.getValue().equals("20"))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());

    log.info("{}",listnames);

上面我們調(diào)用了collect(Collectors.toList())將值轉(zhuǎn)成了List。

使用stream獲取map的value

上面我們獲取的map的key,同樣的我們也可以獲取map的value:

List<String> listAges = someMap.entrySet().stream()
        .filter(e -> e.getKey().equals("alice"))
        .map(Map.Entry::getValue)
        .collect(Collectors.toList());

    log.info("{}",listAges);

上面我們匹配了key值是alice的value。

總結(jié)

Stream是一個非常強大的功能,通過和map相結(jié)合,我們可以更加簡單的操作map對象。

本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/stream-formap

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 輕松掌握Java橋接模式

    輕松掌握Java橋接模式

    這篇文章主要幫助大家輕松掌握Java橋接模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java如何獲取主機的基本信息詳解

    Java如何獲取主機的基本信息詳解

    最近遇到一個工作需求,上網(wǎng)查了一下怎樣在Java中獲取本機的ip和主機名,所以下面這篇文章主要給大家介紹了關于Java如何獲取主機的基本信息,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • SpringBoot整合Mybatis實現(xiàn)CRUD

    SpringBoot整合Mybatis實現(xiàn)CRUD

    這篇文章主要介紹了SpringBoot整合Mybatis實現(xiàn)CRUD的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 基于Spring AOP的Log收集匯總

    基于Spring AOP的Log收集匯總

    張三針對公司現(xiàn)有日志處理系統(tǒng)的不足,采用了SpringAOP技術(shù)和Redis存儲,設計并實現(xiàn)了一個性能更高效的日志處理系統(tǒng),該系統(tǒng)通過SpringAOP的切面攔截功能,捕獲方法調(diào)用信息作為日志內(nèi)容,并將其統(tǒng)一格式化后存儲到Redis中
    2024-10-10
  • groovy腳本定義結(jié)構(gòu)表一鍵生成POJO類

    groovy腳本定義結(jié)構(gòu)表一鍵生成POJO類

    這篇文章主要為大家介紹了groovy腳本定義結(jié)構(gòu)表一鍵生成POJO類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • java實現(xiàn)身份證號碼驗證的示例代碼

    java實現(xiàn)身份證號碼驗證的示例代碼

    這篇文章主要為大家詳細介紹了如何利用java語言實現(xiàn)身份證號碼驗證的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-09-09
  • 關于后端如何解決跨域的問題說明

    關于后端如何解決跨域的問題說明

    這篇文章主要介紹了關于后端如何解決跨域的問題說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 一文詳解如何使用Java來發(fā)送qq郵箱郵件

    一文詳解如何使用Java來發(fā)送qq郵箱郵件

    這篇文章主要給大家介紹了關于如何使用Java來發(fā)送qq郵箱郵件的相關資料,文中降了準備工作(開啟服務并生成授權(quán)碼)、接口調(diào)用(引入依賴和編寫接口代碼)、發(fā)送HTML格式郵件等內(nèi)容,需要的朋友可以參考下
    2024-12-12
  • spring事務之事務掛起和事務恢復源碼解讀

    spring事務之事務掛起和事務恢復源碼解讀

    這篇文章主要介紹了spring事務之事務掛起和事務恢復源碼解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • IntelliJ IDEA(2017)安裝和破解的方法

    IntelliJ IDEA(2017)安裝和破解的方法

    這篇文章主要介紹了IntelliJ IDEA(2017)安裝和破解的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

克东县| 齐齐哈尔市| 运城市| 拉萨市| 鹿泉市| 怀远县| 图们市| 闸北区| 芜湖县| 乐亭县| 阳朔县| 镇江市| 桦甸市| 阿瓦提县| 若尔盖县| 绥江县| 株洲市| 申扎县| 香港 | 宜丰县| 池州市| 陆良县| 新邵县| 芦山县| 南乐县| 怀远县| 浙江省| 虹口区| 平陆县| 海丰县| 来安县| 定兴县| 天门市| 安国市| 小金县| 潍坊市| 容城县| 珠海市| 于都县| 股票| 星子县|