gpt4 book ai didi

java - 创建另一个 map 的 map

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

我有一个如下所示的 map :

Map<String, List<Integer>> map = new TreeMap<>();

假设 map 的内容如下所示:

one, [-55, -55, -54, -54, -55, -54, -54, -54, -54, -55]
two, [-61, -61, -61, -61, -60, -61, -60, -61, -60, -60]
three, [-69, -69, -68, -68, -68, -69, -70, -68, -69, -69]

我创建了一个名为“addRandomValuesToList”的方法,该方法查看称为输入的整数列表,采用 4 个值并将它们放入另一个名为 randomValues 的列表中。

public static List<Integer> addRandomValuesToList(List<Integer> input) 
{
List<Integer> randomValues = new ArrayList<>();
...
return randomValues
}

我想在 map 中的所有列表上使用 addRandomValuesToList 方法,因此我得到例如:

one, [-54, -54, -54, -54]
two, [-61, -61, -61, -61,]
three, [-69 -69, -70, -68]

我很难做到这一点。我尝试过类似的事情:

Map<String, List<Integer>> test = new TreeMap<>();

for (Map.Entry<String, List<Integer>> entry : map.entrySet()) {
newList = addRandomValuesToList(entry.getValue());
test.put(entry.getKey(), newList);
}

这会导致测试 map 中的某些列表完全为空。是我做错了什么还是我的方法不对?

最佳答案

应该将变量声明为尽可能局部的。 (它只会在循环中存储一次内存。)

此外,Map.Entry 由 map 的内部数据支持。所以它有一个方法setValue ,当然不是setKey .

Map<String, List<Integer>> test = new TreeMap<>();
for (Map.Entry<String, List<Integer>> entry : map.entrySet()) {
List<Integer> newList = addRandomValuesToList(entry.getValue());
entry.setValue(newList);
}

还有getValue列表是来自 map 的内部数据,由 map 支持。人们可以这样做:

entry.getValue().add(42);

addRandomValuesToList :如果它确实修改了传递的条目值,则该方法可以为空,无需对结果执行任何操作。

关于这个错误我不确定。 map 中的每个列表都必须是一个新实例( new ArrayList<>() 或此类)。

关于java - 创建另一个 map 的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060667/

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