gpt4 book ai didi

java - 保证键唯一时 HashMap 的性能

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:01 27 4
gpt4 key购买 nike

如果保证我希望使用的 key 是唯一的(或者至少可以假设 key 是唯一的),是否使用 'vanilla' ConcurrentHashMap提供最佳性能,或者是否需要修改散列函数或 put 方法以避免不必要的散列?

此外,与非数字键(例如具有适当哈希函数的字符串或 POJO)相比,数字键是否具有任何性能优势?

最佳答案

正如评论中已经提到的,如果您不需要线程安全方面,则不要使用 ConcurrentHashMap

如果您想要绝对最佳性能,请考虑保留您的 key 并使用 IdentityHashMap .这避免了计算对象的散列(并且,如评论中所述,不需要评估 equals),而是假设引用本身就是散列。

显然,您必须确保同一键的两个实例是同一对象(例如,您必须确保引用相等,而不仅仅是对象相等)。实习所有的 key 是实现这一目标的一种方法。

Implementation note: This is a simple linear-probe hash table, as described for example in texts by Sedgewick and Knuth. The array alternates holding keys and values. (This has better locality for large tables than does using separate arrays.) For many JRE implementations and operation mixes, this class will yield better performance than HashMap (which uses chaining rather than linear-probing).

如果你知道所有的键,也许你也可以考虑perfect hashing ?还是映射到一个简单的数组结构?

关于java - 保证键唯一时 HashMap 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6664306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com