嵌套哈希图:不需要空检查和手动获取的 putIfAbsent 替代方案?
Nested Hashmap: Alternative to putIfAbsent which does not requires null check and manual get?
我有一个嵌套的 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);
}
如您所见,如果没有嵌套地图,我会添加。如果它已经存在,我将获取当前值作为 return 值。如果它不存在,putIfAbsent
returns null
这需要我进行空检查并手动填充变量。
这似乎不是很干净,但我不知道更好的方法。
有没有办法添加不存在的值,并以更流畅的方式继续使用新值或先前存在的值?
使用computeIfAbsent
:
private void add(String currentVersion, String targetVersion, Object object) {
definedUpdatePlans.computeIfAbsent(currentVersion, k -> new HashMap())
.put(targetVersion, object);
}
它returns:
the current (existing or computed) value associated with the specified key, or null if the computed value is null
我有一个嵌套的 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);
}
如您所见,如果没有嵌套地图,我会添加。如果它已经存在,我将获取当前值作为 return 值。如果它不存在,putIfAbsent
returns null
这需要我进行空检查并手动填充变量。
这似乎不是很干净,但我不知道更好的方法。
有没有办法添加不存在的值,并以更流畅的方式继续使用新值或先前存在的值?
使用computeIfAbsent
:
private void add(String currentVersion, String targetVersion, Object object) {
definedUpdatePlans.computeIfAbsent(currentVersion, k -> new HashMap())
.put(targetVersion, object);
}
它returns:
the current (existing or computed) value associated with the specified key, or null if the computed value is null