gpt4 book ai didi

java - 什么应该是哈希表中的关键的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:46 26 4
gpt4 key购买 nike

最好的查找结构是HashTable。它平均提供恒定的访问(在最坏的情况下是线性的)。
这取决于散列函数。好的。
我的问题如下。假设 HashTable 的良好实现,例如HashMap 是否有关于映射中传递的键的最佳实践?我的意思是建议键必须是不可变对象(immutable对象),但我想知道是否还有其他建议。
例如 key 的大小?例如,在一个好的 HashMap 中(以上述方式)如果我们使用 String 作为键,“瓶颈”是否会出现在 equals 的字符串比较中(尝试找到 key )?那么键应该保持小吗?或者是否有不应该用作键的对象?例如。 URL?在这种情况下,您如何选择使用什么作为 key ?

最佳答案

HashMap 的最佳性能键可能是 Integer,其中 hashCode()equals() 实现为:

public int hashCode() {
return value;
}

public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}

也就是说,HashMap 的目的是将一些对象(值)映射到其他一些对象(键)。哈希函数用于寻址(值)对象的事实是提供快速、恒定时间的访问。

it is recommended that the key must be an immutable object but I was wondering if there are other recommendations.

建议是Map objects to what you need:不要认为什么更快;但请考虑什么最适合您的业务逻辑来处理要检索的对象。

重要的要求是键对象必须是不可变的,因为如果在将键对象存储在 Map 中后更改键对象,以后可能无法检索关联的值。

HashMap 中的关键字Map。您的对象应该只是映射。如果您牺牲了优化键的映射任务,那么您就违背了 Map 的目的 - 可能不会实现任何性能提升。

我 100% 同意您问题中的前两条评论:

the major constraint is that it has to be the thing that you want to base the lookup on ;)
– Oli Charlesworth

The general rule is to use as the key whatever you need to look up with.
– Louis Wasserman

记住两个优化规则:

  1. 不要。
  2. (仅限专家)还没有。

第三条规则是:优化前分析

关于java - 什么应该是哈希表中的关键的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367081/

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