【发布时间】:2019-05-17 23:01:36
【问题描述】:
我有一个包含很多单词的字符串数组。我希望获取数组中包含的单词的索引(如果不包含则为-1)。
我首先创建了一个循环来搜索数组中的所有元素,同时增加一个变量,当我找到它时,我返回变量的值。
但是数组可能非常非常大,因此搜索所有元素非常慢。我决定在我的字符串数组中添加一个新单词之前,我会使用hashCode() % arrayLength 来获取我应该放置它的位置的索引。然后,为了恢复索引,我只需重用 hashCode() % arrayLength 即可立即知道它是什么索引。
问题是有时会出现“冲突”,两个元素在数组中可以有相同的索引。
有人知道如何处理它吗?或者任何其他替代方法可以更快地获取元素的索引?
【问题讨论】:
-
您是否尝试重新实现
HashMap? -
而不是将对象放在数组中。为什么不将它们放在
HashMap<Integer, Object>中,其中键是哈希码。 -
@locus2k 不会处理哈希冲突的问题。
-
@DodgyCodeException 他没有遇到哈希冲突。他在另一个项目的数组中获得了相同的索引。他正在使用模运算来计算指数。即使使用不同的哈希值,使用模数也很容易得出相同的索引。