Java 8 Map 中新增的方法使用記錄

得益於 Java 8 的 default 方法特性,Java 8 對 Map 增加了不少實用的默認方法,像 getOrDefaultforEachreplacereplaceAllputIfAbsentremove(key, value)computeIfPresentcomputeIfAbsentcompute 和merge 方法。另外與 Map 相關的 Map.Entry 也新加了多個版本的 comparingByKey 和 comparingByValue 方法。

爲達到熟練運用上述除 getOrDefault 和 forEach 外的其他方法,有必要逐一體驗一番,如何調用,返回值以及調用後的效果如何。看看每個方法不至於 Java 8 那麼多年還總是  if(map.containsKey(key))... 那樣的老套操作。

注:Map 新增方法對  present 的判斷是 map.containsKey(key) && map.get(key) != null,簡單就是  map.get(key) != null,也就是即使 key 存在,但對應的值爲 null 的話也視爲 absent。absent 就是 map.get(key) == null。 不同 Map 實現對 key/value 是否能爲 null 有不同的約束, HashMap, LinkedHashMap, key 和 value 都可以爲 null 值,TreeMap 的 key 爲不能爲 null, 但 value 可以爲 null, 而 Hashtable, ConcurrentMap 則 key 和 value 都不同爲 null。一句話 absent/present 的判斷是 map.get(key) 是否爲 null。 閱讀全文 >>

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