java使用一对(x,y)作为键在HashMap上迭代
我有一个HashMap:
resources = new HashMap<Pair, Resource>();
我已经举例说明了
resources.put(new Pair(x,y), new Resource());
Pair是我创建的一个自定义Pair类,它已被覆盖。等于和。hashMap以避免重复键
我想对资源进行迭代,以便识别我创建的唯一实例。更具体地说,我需要确定唯一的(x,y)对
我已经找到了在HashMaps上迭代的解决方案,但我有点困惑如何调整它(如下所示)以使用成对的密钥
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "/" + entry.getValue());
}
谢谢
# 1 楼答案
也没什么不同
Map
和Map.Entry
是泛型的,因此在构造映射时可以指定参数化类型事实上,您的
Pair
类本身可能应该被泛化Pair<T,U>
至于获取唯一对,您可以只做
Set<Pair> uniquePairs = keyToValue.keySet()
,或者,如果您根本不需要相应的值,您可以只使用HashSetSet<Pair> uniquePairs = new HashSet<>()
。它们将与Pair.hash
和Pair.equals
的实现一样独特# 2 楼答案
首先,我想你的意思是你已经覆盖了Pair类中的equals()和hashCode()方法,对吗? 你如何定义唯一对?我希望你对唯一性的定义不是基于equals(),因为如果是这样,那么HashMap的所有键都是唯一的