从头开始创建Hashtable?

Bil*_*ill 1 java hashtable

我正在编写一个程序,它会记录文档中的单词及其使用频率和行号.当我被告知你必须从头创建一个哈希表时,我以为我已经完成了它.我不知道从哪里开始.关于在哪里以及如何开始的任何建议将不胜感激.

Jac*_*nds 11

哈希表是重要的基础数据结构.您可以在维基百科的哈希表文章中阅读更多相关信息.幸运的是,它们很容易实现.

基本上,哈希表是一种数据结构,它接受一个键并返回或存储该键的值.

在它们的核心,它们通常使用数组实现,我们将其称为arr键值对存储在arr[key.hashCode()%arr.length].请注意,由于您的数组长度不是无限长,并且hashCode无法保证生成唯一值,因此最终会得到映射到数组相同索引的键.这称为碰撞.

解决这些冲突的一种方法是为每个成员存储链表arr.那么定义arr会是这样的

LinkedList<Object> arr[];
Run Code Online (Sandbox Code Playgroud)

映射到的所有对象arr[key.hashCode()%arr.length]都将添加到该位置的列表中.如果要从哈希表中检索对象,请跳转到找到的链接列表arr[key.hashCode()%arr.length]并遍历链表的每个成员,直到找到键所在的键值对.equals.

一个好的哈希表实现可能会做一些事情,如arr一旦它太满就调整大小.