我有一个HashMap:
resources = new HashMap<Pair, Resource>();
我已经实例化了......
resources.put(new Pair(x,y), new Resource());
Pair是我创建的自定义Pair类,它重写了.equals和.hashMap以避免重复键。
我想迭代资源,以便识别我创建的唯一实例。更具体地说,我需要识别唯一的(x,y)对。
我已经找到了迭代HashMaps的解决方案,但是我对如何调整它(如下所示)以使用对的密钥感到有点困惑。
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "/" + entry.getValue());
}
谢谢!
答案 0 :(得分:0)
没有什么不同。 Map
和Map.Entry
是通用的,因此您在构建地图时指定参数化类型。
Map<Pair, String> keyToValue = new HashMap<>();
// put stuff in it
for (Map.Entry<Pair, String> entry: keyToValue.entrySet()) {
Pair pair = entry.getKey();
String value = entry.getValue();
// do stuff
}
事实上,您的Pair
课程本身可能会变得一致 - Pair<T,U>
。
至于获取唯一对,您可以Set<Pair> uniquePairs = keyToValue.keySet()
或者,如果您根本不需要相应的值,则可以使用HashSet - Set<Pair> uniquePairs = new HashSet<>()
。它们将与Pair.hash
和Pair.equals
的实现一样独特。
答案 1 :(得分:0)
首先,我认为你的意思是你已经在Pair类中重写了equals()和hashCode()方法吗? 你如何定义唯一的对?我希望你的唯一性定义不是基于equals(),因为如果是这样的话,那么HashMap的所有键都是唯一的