我有一个使用Set作为键类型的Map,就像这样:
Map<Set<Thing>, Val> map;
当我查询map.containsKey(myBunchOfThings)时,它返回false,我不明白为什么。我可以通过迭代keyset中的每个键并验证是否有一个键(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的约定?在将集合(或更一般地说,集合)作为映射键时,是否有使用技巧?