哪种 Java 哈希结构支持“线性链接”?

发布于 2024-10-31 08:10:36 字数 447 浏览 1 评论 0原文

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

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

在此处输入图像描述

LinkedHashMap 这里的选择正确吗?是HashMap吗?任何一个?为什么?

For homework, I have to implement a variety of hash functions in C++ or Java. I'm comfortable working with Java, but haven't used its hash functionality.

I want a hash structure that links colliding keys. Like this:

enter image description here

Is LinkedHashMap the correct choice here? Is it HashMap? Either? Why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

燕归巢 2024-11-07 08:10:36

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

Well, just a regular HashMap links entries that end up in the same bucket (each bucket is really an element in an array of linked lists). A LinkedHashMap also maintains links between entries to preserve the insertion order, but that's not what's happening in your diagram.

小清晰的声音 2024-11-07 08:10:36

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

HashMap does this.
What LinkedHashMap does is linking the keys in insertion order.

不打扰别人 2024-11-07 08:10:36

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

LinkedHashMap 只是一个 HashMapList 的组合,用于跟踪映射中元素的插入顺序。其名称中的“链接”一词与一个容器中元素的存储方式没有任何特别关系。

I think the standard HashMap already works this way: it has a number of bins, and elements with colliding hash codes end up in the same bin. You can lookup the source code of HashMap yourself: in your JDK installation directory there is a file src.zip that contains the source code.

LinkedHashMap is just a HashMap combined with a List to keep track of the insertion order of elements in the map. The word "linked" in its name doesn't have anything in particular to do with how elements in one bin are stored.

陈独秀 2024-11-07 08:10:36

您可以使用 HashMap

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

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

HashMap 提供快速随机访问。
还有:

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

You may use HashMap

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

Instead of object specify the type you need.

The HashMap grants fast random access.
Also there are :

TreeMap - data sorted by key.
LinkedHashMap - data stored in order it is entered to the container.

燃情 2024-11-07 08:10:36

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

LinkedHashMap is for creating a iteratable map that with predictable order of the keys. Internally, a HashHap is free to use whatever means it deems fit to handle key collision which may or may not be a linked list. I don't think there is any standard guarantee that the underlaying mechanism for collision buckets to use a linked list in Java but in practice they may.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文