使用hashCode获取数组Java元素的索引

johanDa9u:

我有一个包含很多单词的String数组。我希望获取数组中包含的单词的索引(如果不包含则为-1)。

我首先做了一个循环,在递增变量的同时搜索数组中的所有元素,当我找到它时,我将返回变量的值。

但是,数组可能非常非常大,因此搜索所有元素的速度非常慢。我已经决定,在将新单词添加到字符串数组中之前,我将hashCode() % arrayLength先获取要放置它的位置的索引。然后,为了找回索引,我只是重复使用hashCode() % arrayLength以立即知道它是什么索引。

问题是有时存在“冲突”,并且两个元素在数组中可以具有相同的索引。

有人知道如何处理吗?还是有其他替代方法可以更快地获取元素的索引?

卡罗尔·道贝克(Karol Dowbecki):

您正在尝试使用数组实现开放式寻址除非这是一项家庭作业,否则Java标准库已经具有用于解决搜索和冲突问题的类。

您可能想使用a HashSet检查是否String存在。它在后台使用HashMap了实现单独链接来解决冲突的方法。

String[] words = { "a" };
Set<String> set = new HashSet<>(Arrays.asList(words));
return set.contains("My Word") ? 1 : -1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章