【发布时间】:2015-01-09 21:00:34
【问题描述】:
我的问题几乎就是上面的内容。根据我看到的哈希表图表,例如:
Hashtable temp1 = new Hashtable(20);
SList[] temp2 = 新 SList[20];
假设 SList 是一个单链表,难道 temp1 和 temp2 几乎不一样吗?我只是想更好地理解哈希表。谢谢!
【问题讨论】:
-
这两个是不同的。哈希表由某种称为键的对象索引,该对象具有定义良好的操作,称为
hash。根据散列的值,对 (Key, Value) 存储在散列表中的适当位置。一般来说,散列函数对于几乎相同的对象应该有很大不同的值。哈希表使用列表来处理冲突 - 不同的键可以产生相同的哈希 - 如果是这样,它们将存储在此冲突解决模型中的同一位置(在相应的列表中)。哈希表可以在内部使用列表数组。 -
我明白你的意思,但是假设你定义了一个单独的类 HashTableImplementation ,其构造函数是一个单链表数组。因为您使用的是单链表,所以已经处理了冲突,您可以按照自己喜欢的方式对同一键的值进行排序。如果你在 HashTableImplementation 中添加了一个哈希方法以及一个压缩函数方法,你就不能拥有与哈希表完全相同的东西吗?
-
是的。但是您也可以使用另一种解决冲突的方法,它仍然是一个哈希表。内部使用的东西——无论是链表数组还是简单数组,都只是一个实现细节。
-
啊,我明白了!谢谢两位的回答!那只是在碰撞处理中。
标签: arrays linked-list hashtable