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

歡迎訪問 生活随笔!

生活随笔

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

java

Java 8 的List<V> 转成 Map<K, V>

發布時間:2023/11/29 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 8 的List<V> 转成 Map<K, V> 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題: Java 8 的List 轉成 Map<K, V>

我想要使用Java 8的streams和lambdas轉換一個 List 對象為 Map

下面是我在Java 7里面的寫法

private Map<String, Choice> nameMap(List<Choice> choices) {final Map<String, Choice> hashMap = new HashMap<>();for (final Choice choice : choices) {hashMap.put(choice.getName(), choice);}return hashMap; }

我可以很輕松地用Java8和Guava搞定,但是呢我又不知道怎么不用Guava搞定

Guava寫法:

private Map<String, Choice> nameMap(List<Choice> choices) {return Maps.uniqueIndex(choices, new Function<Choice, String>() {@Overridepublic String apply(final Choice input) {return input.getName();}}); }

Guava +Java 8 lambdas寫法:

private Map<String, Choice> nameMap(List<Choice> choices) {return Maps.uniqueIndex(choices, Choice::getName); }

回答一:

基于Collectors 文檔,可以簡寫成為:

Map<String, Choice> result =choices.stream().collect(Collectors.toMap(Choice::getName,Function.identity()));

回答二

如果你的key不保證對于每個list中每個元素都是獨一無二的,你就應該轉換成Map<String, List>而不是Map<String, Choice>

Map<String, List<Choice>> result =choices.stream().collect(Collectors.groupingBy(Choice::getName));

回答三

用 getName() 作為 key 并且Choice 本身作為map的value:

Map<String, Choice> result =choices.stream().collect(Collectors.toMap(Choice::getName, c -> c));

回答四

上述的大部分回答的忽略了一種情況了就是當list有重復元素的時候。這種情況下就會拋出 IllegalStateException,參考下面的代碼去處理重復的list元素吧

public Map<String, Choice> convertListToMap(List<Choice> choices) {return choices.stream().collect(Collectors.toMap(Choice::getName, choice -> choice,(oldValue, newValue) -> newValue));}

回答五

例如你想轉換對象的一些域到map上:

對象是:

class Item{private String code;private String name;public Item(String code, String name) {this.code = code;this.name = name;}//getters and setters}

List 轉 Map的操作是:

List<Item> list = new ArrayList<>(); list.add(new Item("code1", "name1")); list.add(new Item("code2", "name2"));Map<String,String> map = list.stream().collect(Collectors.toMap(Item::getCode, Item::getName));

文章翻譯自Stack Overflow:https://stackoverflow.com/questions/20363719/java-8-listv-into-mapk-v

總結

以上是生活随笔為你收集整理的Java 8 的List<V> 转成 Map<K, V>的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 少妇高潮一区二区三区99欧美 | 日本电车痴汉 | 寂寞少妇让水电工爽hd | 亚洲人成在线播放 | 国产男女猛烈无遮挡免费视频动漫 | 久久99久久99精品免视看婷婷 | 丁香婷婷久久久综合精品国产 | 免费一区二区三区四区 | 美女张开腿让男人桶爽 | 成年人免费看 | av黄色在线观看 | 青青免费在线视频 | 一级片小视频 | 婷婷影院在线观看 | 毛茸茸free性熟hd | 狠狠干,狠狠操 | 一卡二卡三卡在线观看 | 叶全真三级 | 激情欧美网站 | 成人在线视频观看 | 操一操av| 都市激情中文字幕 | 欧美日韩免费观看一区=区三区 | 国产经典av | 亚洲a图 | 性爱动漫| 亚洲免费网站在线观看 | 男人的天堂av女优 | 日韩免费在线观看视频 | 黄网页在线观看 | 国产区在线看 | 最近最新mv字幕观看 | 久久一区视频 | 91福利专区 | 色男人网| 久久国产精品久久久久久电车 | av999| 午夜av免费看 | 久草成人 | 国产福利在线视频观看 | 青青超碰 | 天狂传说之巴啦啦小魔仙 | 免费av网站在线观看 | 国产毛片精品 | 吸咬奶头狂揉60分钟视频 | 精品久久综合 | 澳门黄色录像 | 91国内| 波多野结衣国产 | 亚洲免费视频网 | 91精品国产91 | 亚洲 小说区 图片区 都市 | 500部大龄熟乱视频 亚洲乱码精品 | 国产精品人人 | 国内久久久 | 日韩精品成人无码专区免费 | 亚洲成人一二三 | 操操日日 | 国产精品久久久久久人 | 一级理论片 | 欧美自拍偷拍一区二区 | 农村末发育av片一区二区 | 奇米久久| 久久久久久久伊人 | 欧美日韩亚洲国产 | 成人99视频 | 亚洲一区二区三区电影 | 公妇借种乱htp109cc | 欧美日韩高清丝袜 | 亚洲国内精品 | 茄子av在线| 亚洲影视网 | 欧美九九| 欧美混交群体交 | 亚洲午夜精品久久 | 日韩精品免费播放 | 午夜在线观看免费视频 | 免费看黄20分钟 | 日本欧美不卡 | 高h免费视频 | 国产成人精品一区二区三区福利 | 人妖性做爰aaaa | 狠狠做深爱婷婷综合一区 | 久久99免费| 黄色录像网址 | 五月天堂色 | 日本免费久久 | 亚洲一区二区不卡在线观看 | 中文字幕在线不卡 | 黄色片视频在线观看 | 日本少妇做爰全过程毛片 | 国产成人精品亚洲日本在线观看 | 成人导航网站 | 中文字幕影片免费在线观看 | 一区二区在线不卡 | 环太平洋3:泰坦崛起 | 怎么可能高潮了就结束漫画 | 夜夜夜综合 | 性xxxxxxxxx18欧美|