gpt4 book ai didi

java - 如何向嵌套 HashMap 中插入记录?

转载 作者:行者123 更新时间:2023-12-02 18:11:39 26 4
gpt4 key购买 nike

我想创建一个嵌套的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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com