gpt4 book ai didi

java - 处理 HashMap 中的重复值

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:33 32 4
gpt4 key购买 nike

我有一个填充的 HashMap ,格式为 Hashmap<String , ArrayList<Double>> 。在很多情况下,值(Arraylist)是相同的。我想要做的是,如果值相同,则应通过更改 key 将两个单独的条目更改为一个。例如:

HashMap<String, ArrayList<Double>> map = new HashMap<>();
ArrayList<Double> arr = new ArrayList<>();
arr.add(1);
arr.add(2)
map.put("a",arr);
map.put("b",arr);
map.put("c",arr);

这应该会产生一个包含单个条目的 HashMap :

{a, b , c=[1,2]}

我已经尝试解决这个问题几个小时了,但仍然无法做到。提前一百万致谢。

最佳答案

通过重写 put() 创建自定义 HashMap 应该可以,但从性能角度来看,它并不是真正高效。

类似这样的事情:

public class CustomMap extends HashMap<String, ArrayList<Double>> {
@Override
public ArrayList<Double> put(String key, ArrayList<Double> value) {
for (Entry<String, ArrayList<Double>> entry : entrySet()) {
if (entry.getValue().equals(value)) {
String oldKey = entry.getKey();
remove(oldKey);
String newKey = oldKey + ", " + key;
return super.put(newKey, value);
}
}
return super.put(key, value);
}
}

要使用它,只需替换以下内容:

HashMap<String, ArrayList<Double>> map = new HashMap<>();

与:

CustomMap map = new CustomMap();

关于java - 处理 HashMap 中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998514/

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