gpt4 book ai didi

Java Map迭代使用Map Inside Map并在迭代后将其存储在另一个Map中

转载 作者:行者123 更新时间:2023-12-02 07:41:05 25 4
gpt4 key购买 nike

我使用以下方法从数据库中获取了一些数据并将其存储在列表中:

List<MyObject> list =new ArrayList<MyObject>();

列表包含 2 个 MyObject 类的对象。

我有 2 个 map 实现:

Map<String,Map<String,Long>> map1 = new HashMap<String,Map<String,Long>>();
Map<String,Long> map2 = new HashMap<String,Long>();

我迭代了列表并执行了以下代码

for(myObjectObj   :   list){

map2.put(myObjectObj.getAction(),myObjectObj.getCount());
map1.put(myObjectObj.getName(),map2);
}

我想要的最终输出是map1,如下所示:

Name1 action1 count1
action2 count2
Name2 action3 count3
action4 count4

但是使用我的代码我没有得到所需的输出。

最佳答案

在您当前的版本中,您添加到map2实例的数据实际上将添加到map1的所有条目中,因为map2引用对于所有map1实例都是通用的。

鉴于您希望列表中的每个条目都有一个新的嵌套映射,您需要在循环中获取或实例化一个新的 map2:

for(myObjectObj   :   list){ 
String key = myObjectObj.getName();
Map<String,Long> map2 = map1.get(key);
if (map2 == null) {
map2 = new HashMap<String,Long>();
map1.put(key, map2);
}
map2.put(myObjectObj.getAction(),myObjectObj.getCount());
}

关于Java Map迭代使用Map Inside Map并在迭代后将其存储在另一个Map中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577324/

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