为什么HashSet说它不包含这个Object?

时间:2016-05-16 23:33:41

标签: java collections hashset

我正在尝试打印“Contains”,但是,HashSet没有检测到Integer []值。它是否与被参考传递有关?如果我不想将实际的Integer []对象传递给方法的参数,我怎么能克服这个?

''

2 个答案:

答案 0 :(得分:4)

这是因为数组没有以比较元素的方式实现hashCode - 事实上,数组根本不会覆盖hashCode(或equals),因此实现来自Object使用。

数组的hashCodeequals完全基于身份。

如果您想“克服”它,请使用根据元素值计算hashCodeequals的类型,例如ArrayList<Integer>

答案 1 :(得分:0)

在Java中,默认的hashCode实现是使用对象的地址。

  

这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术。)

hashCode() javadocs