哪个Java的哈希结构支持'线性链接'?

时间:2011-04-08 12:57:34

标签: java hash hashtable

对于家庭作业,我必须用C ++或Java实现各种哈希函数。我很习惯使用Java,但没有使用它的哈希功能。

我想要一个链接碰撞键的哈希结构。像这样:

enter image description here

这里LinkedHashMap是正确的选择吗?是HashMap吗?要么?为什么呢?

5 个答案:

答案 0 :(得分:2)

好吧,只是一个常规的HashMap链接条目最终在同一个存储桶中(每个存储桶实际上是链接列表数组中的一个元素)。 LinkedHashMap还维护条目之间的链接以保留插入顺序,但这不是图表中发生的情况。

答案 1 :(得分:1)

HashMap就是这样做的。 LinkedHashMap的作用是按插入顺序链接键。

答案 2 :(得分:1)

我认为标准HashMap已经以这种方式工作:它有多个bin,并且具有冲突哈希码的元素最终在同一个bin中。您可以自己查找HashMap的源代码:在JDK安装目录中,有一个包含源代码的文件src.zip

LinkedHashMap只是一个HashMapList相结合,可以跟踪地图中元素的插入顺序。其名称中的“链接”一词与存储一个箱子中的元素的方式没有任何关系。

答案 3 :(得分:0)

您可以使用HashMap

Map<String,ArrayList<Object>> map = new HashMap<String,ArrayList<Object>>();

而不是对象指定您需要的类型。

HashMap授予快速随机访问权限。 还有:

TreeMap - 按键排序的数据。 LinkedHashMap - 按顺序存储的数据输入容器。

答案 4 :(得分:0)

LinkedHashMap用于创建具有可预测的键顺序的可迭代映射。在内部,HashHap可以自由使用它认为适合处理键冲突的任何方式,这可能是也可能不是链接名单。我认为没有任何标准的保证,碰撞桶的底层机制在Java中使用链表,但在实践中它们可能。