Collections.toMap 报错 空指针 key重复
生活随笔
收集整理的這篇文章主要介紹了
Collections.toMap 报错 空指针 key重复
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Collections.toMap作用
將list按照規則轉成map。
books.stream().collect(Collectors.toMap(Book::getIsbn, Book::getName));
存在的各種坑
空指針
key值重復
空指針 & key重復
重復key 后邊會覆蓋前邊的值
描述問題:當value為null的時候會拋出異常(Book::getName)
Map<Integer, Boolean> collect = list.stream().collect(HashMap::new, (m,v)->m.put(v.getId(), v.getAnswer()), HashMap::putAll);點贊最高的解決方案,其實跟你手動foreach一毛一樣。
https://stackoverflow.com/questions/24630963/java-8-nullpointerexception-in-collectors-tomap
只key值重復 解決
如果說key值一樣也會報錯,需要調用它的另一個函數:
public static void main(String[] args) {List<ContentAnnouncement> list = new ArrayList<>();Map<String, String> map = list.stream().collect(Collectors.toMap(ContentAnnouncement::getTitle, ContentAnnouncement::getAnnouncement, (e1, e2) -> e1));map.forEach((key, value) -> System.out.println(key + " " + value));}(e1, e2) -> e1)這個是如果出現重復key一樣,會只保存之前的value,后面的都去掉
總結
以上是生活随笔為你收集整理的Collections.toMap 报错 空指针 key重复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: left join 后边的on条件 小记
- 下一篇: mysql ---- 官网的测试数据库