我正在编写一个程序,它会记录文档中的单词及其使用频率和行号.当我被告知你必须从头创建一个哈希表时,我以为我已经完成了它.我不知道从哪里开始.关于在哪里以及如何开始的任何建议将不胜感激.
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一旦它太满就调整大小.
| 归档时间: |
|
| 查看次数: |
18289 次 |
| 最近记录: |