gpt4 book ai didi

java - 如何获取 HashMap 的重复键值对?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:14:02 25 4
gpt4 key购买 nike

HashMap<Integer,Integer> hashmapsample= new HashMap<Integer, Integer>();

我可以有这样的值

(1 , 7)
(2 , 4)
(4 , 5)
(3, 7)

不会有任何重复的 Keys 。只能出现重复值

我想选择具有重复值的 (Key,Value) 对。

如果我将 Duplicate (Key,Value) 作为另一个 Hashmap 得到,那就太好了。我该怎么做。?

我期待输出

 (1 , 7)
(3, 7)

最佳答案

这个怎么样?

public HashMap getDuplicateValues(HashMap in)
{
// Clone input HashMap because we're removing stuff from it
in = (HashMap)in.clone();
HashMap rval = new HashMap();
Object[] keys = in.keySet().toArray();

// iterate through all keys
for(int x=0;x<keys.length;x++) {
Object value = in.get(keys[x]);
in.remove(keys[x]);
// if value is in input HashMap, store it in duplicate HashMap because it has another value
if(in.containsValue(value)) {
rval.put(keys[x],value);
}
// if value is in duplicate HashMap, store it also because it HAD another value earlier
if(rval.containsValue(value)) {
rval.put(keys[x],value);
}
}

return(rval);
}

此方法将返回输入 HashMap 中所有重复值的键/值对。


测试代码:

  HashMap map = new HashMap();

map.put("1","2");
map.put("2","1");
map.put("3","8");
map.put("4","4");
map.put("5","6");
map.put("6","8");
map.put("7","3");
map.put("8","4");
map.put("9","4");

HashMap dups = getDuplicateValues(map);

System.out.println("MAP = "+map);
System.out.println("DUP = "+dups);

输出:

MAP = {3=8, 2=1, 1=2, 7=3, 6=8, 5=6, 4=4, 9=4, 8=4}
DUP = {3=8, 6=8, 4=4, 9=4, 8=4}

关于java - 如何获取 HashMap 的重复键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624679/

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