【发布时间】:2015-03-26 00:48:43
【问题描述】:
在 Java 8 中,我有一个 HashSet h(由泛型正确键入),hashCode/equals 方法实现到类型层次结构的底部 - 显然就像 eclipse 为我所做的那样正确。
在某些(罕见的)情况下,方法调用 h.contains(e) 返回 false - 这是错误的(据我的理解),因为集合中有一个元素 e' 具有相等的 hashCodes 和 equals 方法 e。 equals(e') 返回 true。
为了让我更加困惑,new HashSet<>(h).contains(e) 返回正确答案 true。
这怎么可能?
由于这种罕见的情况是在一个难以追溯的大型程序中的某个时刻产生的,我无法提供 MWE,但如果需要,我可以提供更多信息。
【问题讨论】:
-
我不会认为这是重复的,因为我的问题更具体。如果您已经知道要查找的内容,我同意相关帖子也回答了我的问题。但在问之前,我尽力寻找答案,但失败了。因此,寻找“包含方法的奇怪行为”或类似内容的人可能会发现这很有用。
标签: java collections contains