1. 程式人生 > >Java 8 新增 Map 方法使用記錄

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。 

閱讀全文 >>