This question already has answers here:
What is alternative hashing for String keys in Java 8?
(3个答案)
已关闭6年。
Hash32和字符串对象中的Hash有什么区别
在调试过程中,我发现String对象显示hash = 0和hash32 = 0,如下图所示。有些人可以解释显示它的原因。
谢谢回复
(3个答案)
已关闭6年。
Hash32和字符串对象中的Hash有什么区别
在调试过程中,我发现String对象显示hash = 0和hash32 = 0,如下图所示。有些人可以解释显示它的原因。
谢谢回复
最佳答案
通过提供精心选择的键,可以“否定” HashMap
s的性能优势,因此您会遇到很多冲突。这将HashMap
的O(1)访问/时间减少为O(n),从而显着降低了性能。hash32
是用于String
的替代哈希算法的缓存值,因此,如果与默认算法的冲突过多,则可以使用其他算法来尝试减少冲突次数。来源here:
如果在任何特定存储桶中发生太多冲突,则Java 8中将HashMap
重写为对TreeMap
键使用临时Comparable
s,这意味着性能从O(1)变为O(lg n),而不是O(1)到O (n)-重大改进。当String
实现Comparable
时,决定不再需要替代的哈希方案,因此将其删除。
10-05 23:26