如果我会覆盖hashCode()
方法会降低应用程序的性能。我在应用程序的许多地方重写了这个方法。
是的,如果 hashCode 方法的实现方式不好,则可能会降低散列集合的性能。 hashCode 方法的最佳实现应该为唯一对象生成唯一的 hashCode。唯一的 hashCode 将避免冲突,并且可以使用以下方式存储和检索元素O(1)
复杂。但仅靠hashCode方法是无法做到这一点的,还需要重写equals方法来帮助JVM。
如果 hashCode 方法无法为唯一对象生成唯一哈希,那么您有可能在一个存储桶中保存多个对象。当两个元素具有相同的哈希值但 equals 方法为它们返回 false 时,就会发生这种情况。因此,每次发生这种情况时,该元素都会被添加到哈希桶的列表中。这将减慢元素的插入和检索速度。这将导致O(n)
get 方法的复杂度,其中 n 是桶中列表的大小。
Note:当您尝试在 hashCode 实现中为唯一对象生成唯一哈希时,请确保为此编写简单的算法。如果生成哈希的算法太繁重,那么您肯定会发现哈希集合上的操作性能很差。由于对哈希集合的大多数操作都会调用 hashCode 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)