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

Cra*_*lus 6 java algorithm hashtable hashmap data-structures

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

Ale*_*rlo 1

您应该使用您想要使用的任何键来查找数据结构中的内容,它通常是特定于域的约束。话虽如此,请记住, 和 都hashCode()equals()用于在表中查找键。

hashCode()用于查找键的位置,而equals()用于确定您正在搜索的键是否实际上是我们刚刚使用 找到的键hashCode()

例如,考虑两个键a,并且在使用单独链接的b表中具有相同的哈希码。然后,一旦我们找到包含和from的列表的索引,搜索就需要测试表中是否有可能同时存在和。aa.equals(key)ababhashCode()