我有一个Map,它使用Set作为key类型,如下所示:
Map<Set<Thing>, Val> map;当我查询map.containsKey(myBunchOfThings)时,它返回false,我不知道为什么。我可以遍历密钥集中的每个密钥,并验证是否有一个密钥(1)具有相同的hashCode,并且(2)等于() myBunchOfThings。
System.out.println(map.containsKey(myBunchOfThings)); // false.
for (Set<Thing> k : map.keySet()) {
if (k.hashCode() == myBunchOfThings.hashCode() && k.equals(myBunchOfThings) {
System.out.println("Fail at life."); // it prints this.
}
}我是不是从根本上误解了containsKey的合同?使用集合(或者更广泛地说,集合)作为map的关键字有什么秘密吗?
发布于 2010-03-07 01:07:08
在比较关键字时,您是否传递了确切的集合(您想要查找的集合)?
https://stackoverflow.com/questions/2393296
复制相似问题