java - 当 hashcode() 返回零时,对 Collection 实现有何影响

标签 java collections hashcode

好吧,仅供引用,如果对象的 hashcode,那么它对诸如hashmaphashset等Collection实现类有何意义? 方法始终在 demoClass 中返回 0。我知道它与 hashmap 或 Collection 实现的其他类的 putForNullKey 有关,但不太了解细节。我知道对于 null 对象,hascode 是 0 所以它有针对 0 hashcode 的特定方法。

@Override
public int hashCode() {
return 0;
} 

最佳答案

这将使HashMapHashSet和其他依赖hashCode的集合变得非常低效,因为所有元素/条目都会被添加到同一个垃圾箱。

诸如 get()containsKey()contains() 之类的方法将需要 O(n) > 而不是 O(1)

顺便说一句,答案并不特定于 0 hashCode。任何常量 hashCode 的行为都完全相同。

关于java - 当 hashcode() 返回零时,对 Collection 实现有何影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362401/

相关文章:

c# - IEnumerable<T>.Concat——无需更改引用即可工作的替代品?

Java 负载因子权衡

java - 覆盖父类(super class) Equals 和 HashCode 并认为我应该对子类做同样的事情

java - 更多关于 equals 和 hashCode 的内容

java - 是否可以在自定义组件中使用 Camel 组件?

java - 如何将java对象转换为C结构体

java - Java中的UDP广播

java - CachedRowSet、ResultSetDynaClass 还是其他集合?

java - JAVA 的 equals 方法总是返回 true

java - Spring AOP : Performing Validations