嵌套Hashmap:putIfAbsent的替代方法,不需要空检查和手动获取?

时间:2018-08-13 09:42:43

标签: java hashmap nested-map

我有一个嵌套的HashMap,看起来像这样:HashMap<String, HashMap<String,Object>>

我创建了一个add方法来填充HashMap

private void add(String currentVersion, String targetVersion, Object object) {
    HashMap <String, HashMap <String, Object >> nestedMap = definedUpdatePlans.putIfAbsent(currentVersion, new HashMap());
    if (nestedMap == null) {
        nestedMap = definedUpdatePlans.get(currentVersion);
    }
    nestedMap.put(targetVersion, object);
}

如您所见,如果不存在,我将添加嵌套地图。如果已经存在,则将当前值作为返回值。如果不存在该变量,putIfAbsent返回null,这需要我进行空检查并手动获取该变量的值。

这似乎不是很干净,但是我不知道更好的方法。

是否可以添加一个不存在的值,并以更流畅的方式继续使用新值或现有值?

1 个答案:

答案 0 :(得分:3)

使用[double precision]

computeIfAbsent

它返回:

  

与指定键关联的当前(现有或计算出的)值;如果计算出的值为null,则返回null