【发布时间】:2013-09-21 19:57:41
【问题描述】:
我有一个HashSet<Foo>。
我有一个对象是
- 等于集合的一个元素并且
- 具有与实现的同一对象匹配的哈希码。
如果我调用hashSet.contains(fooInstance),它仍然返回false。
真正奇怪的是以下行返回true:
new ArrayList<Foo>(hashSet).contains(fooInstance)
遗憾的是,要找出.contains() 实现的差异到底在哪里,结果比预期的要难。
但我认为我会很安全,因为 .equals() 和 .hashCode() 工作正常。
【问题讨论】:
-
Foo的hashCode稳定吗? -
@MarkRotteveel 显然不是,根据当前描述,这是唯一可能导致 OP 声明的行为。
-
@Thihara 谢谢。这已经有帮助了。
标签: java collections equals contains hashcode