gpt4 book ai didi

java - 清除 HashMap 中 List 类型的值

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:43 27 4
gpt4 key购买 nike

我正在使用 HashMap 来存储键/值对。键包含重复项,值是一个列表。每当有新键出现时,我都想清除值列表。到目前为止我的代码是

Map<Integer, List<Integer> > bandsMap = new HashMap< Integer, List<Integer> >();
List<Integer> erfcn = new ArrayList< Integer >();

for(int i=0 ; i<frequencies.length; i++)
erfcn.add(frequencies[i]);

bandsMap.put( band_number, erfcn);

我在这里做的是我有一个频率数组,我将数组的值添加到我的列表中,然后将列表放到我的 map 中。当 band_number 相同时,它工作正常。

假设如果 band_number = 20 的前 10 次,它只是在列表中添加新值并在我的 map 中添加带有 key=20 的列表。但是当新 key 到达时,它也会将新内容添加到旧 key 中。

是否可以通过某种方式检查键是否与之前的键相同,然后简单地将列表放入 map ,否则先清除列表,然后将其添加到 map ?

谢谢

最佳答案

听起来您只创建了一次 erfcn 列表。每个 bandsMap.put 调用都将同一个列表对象与所有不同的键相关联。相反,您需要为每个 band_number 创建一个 列表。如果该键存在,您还需要重新使用该键的现有列表。

所以,移动这一行:

List<Integer> erfcn = new ArrayList< Integer >();

远离 bandsMap 的声明。直接在添加频率的函数内部声明,如下:

List<Integer> erfcn = bandsMap.get(band_number);
if (erfcn == null) erfcn = new ArrayList<Integer>();

关于java - 清除 HashMap 中 List 类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19862408/

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