2

我有一个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需要我进行空检查并手动获取来填充变量。

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

有没有办法在不存在的情况下添加价值,并以更流畅的方式继续使用新的或现有的价值?

4

1 回答 1

4

使用computeIfAbsent

private void add(String currentVersion, String targetVersion, Object object) {
    definedUpdatePlans.computeIfAbsent(currentVersion, k -> new HashMap())
                      .put(targetVersion, object);
}

它返回:

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

于 2018-08-13T09:46:47.717 回答