作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个嵌套的HashMap
:
var myHashMap = new HashMap<String, HashMap<String, int>>();
并且我想将记录插入到内部 HashMap
中,如果键不存在,我发现自己需要实例化内部 HashMap
:
var myHashMap = new HashMap<String, HashMap<String, int>>();
var outerStringValue = "ABC";
var innerStringValue = "XYZ";
var innerInt = 45;
if (!myHashMap.containsKey(outerStringValue) {
var innerHashMap = new HashMap<String, int>();
innerHashMap.put(innerStringValue, innerInt);
myHashMap.put(outerStringValue, innerHashMap);
} else {
myHashMap.get(outerStringValue).put(innerStringValue, innerInt);
}
有没有更好的方法来做到这一点,而不需要为每个唯一的myHashMap
(外部HashMap
)键实例化一个新的innerHashMap
?
最佳答案
您可以使用Java 8方法computeIfAbsent()
。它需要一个键,一个函数,如果给定的键不存在于 map 中,该函数将被触发并生成一个值。
请注意,此方法将返回当前与给定键关联的值,即先前存在的内部映射,或作为以下结果生成的映射方法执行。
Map<String, Map<String, Integer>> nestedMap = new HashMap<>();
nestedMap.computeIfAbsent(outerKey,k -> new HashMap<>())
.put(innerKey, someValue);
另请注意:
int
这样的基元作为泛型类型参数。通用参数应该是一个对象(了解更多信息, see )关于java - 如何向嵌套 HashMap 中插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72234600/
我是一名优秀的程序员,十分优秀!