TreeMap空指針記錄,map中竟然能有兩個相同的key

在工作中發現了一個奇特的現象,做一個簡單的記錄
1.聲明一個treeMap,構造方法中的map是一個記錄着treeMap的key的權重的一個map,但是這個map可能沒有包含全部的treeMap的key。
Map<String, List<Map<String, Object>>> unitIdMap = new TreeMap<>((o1, o2) -> {
if (map.get(o1) == null) {
return o1.equals(o2) ? 0 : 1;
}
if (map.get(o2) == null) {
return -1;
}
return map.get(o1) - map.get(o2);
});
2. 向treeMap中put了 多個map中沒有的key,
3.取出treeMap的key遍歷
Set unitIdSet = unitIdMap.keySet();
unitIdSet.forEach(
unitId -> {
unitIdMap.put(unitId, new LinkedList<>());
}
);
此時會報空指針。

image.png

4.如果取key遍歷的時候使用 new LinkedHashSet<>(unitIdMap.keySet())
可以在遍歷的時候規避這個空指針,但是會有一個更神奇的現象,在後邊使用treeMap的時候會發現treeMap裏面竟然有兩個相同的key

image.png

這個問題因爲時間的關係暫時沒有時間去深入的思考,在這記錄一下,我懷疑可能是我的treeMap的規則出現了問題,有興趣的可以研究一下 給我分享下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章