Java LinkedHashMap中的entrySet()是否也能保证顺序?

Java LinkedHashMap中的entrySet()是否也能保证顺序?,java,linkedhashmap,Java,Linkedhashmap,当有人试图访问linkedHashMap时,我使用linkedHashMap来保证秩序。然而,当需要对其进行迭代时,使用entrySet()返回键/值对是否也能保证顺序?迭代时不会进行任何更改 编辑:另外,通过遍历映射的键并调用get来遍历映射是否有任何不利影响 此链表定义了迭代顺序,通常是将关键帧插入贴图的顺序(插入顺序)。请注意,如果将键重新插入地图,则插入顺序不受影响。(如果调用m.put(k,v),而m.containsKey(k)将在调用之前立即返回true,则将密钥k重新插入到映射m

当有人试图访问linkedHashMap时,我使用linkedHashMap来保证秩序。然而,当需要对其进行迭代时,使用entrySet()返回键/值对是否也能保证顺序?迭代时不会进行任何更改

编辑:另外,通过遍历映射的键并调用get来遍历映射是否有任何不利影响

此链表定义了迭代顺序,通常是将关键帧插入贴图的顺序(插入顺序)。请注意,如果将键重新插入地图,则插入顺序不受影响。(如果调用m.put(k,v),而m.containsKey(k)将在调用之前立即返回true,则将密钥k重新插入到映射m中。)

据报道,是的

此实现与HashMap的不同之处在于,它维护一个贯穿其所有条目的双链接列表。此链表定义了迭代顺序,通常是将关键帧插入贴图的顺序(插入顺序)


至于编辑,不,它应该工作得很好。但是条目集的速度要快一些,因为它避免了在迭代过程中查找映射中每个键的开销。

如果您确定在迭代过程中不会进行任何更改,则可以保证使用
entrySet()
进行正确的排序,如中所述。

我正要问同样的问题,但是如果其他人已经问了并且得到了一个好的答案,为什么还要问呢+在LinkedHashMap中,您可以使用插入顺序和访问顺序。秩序始终维持着。请介绍我的教程,但entrySet可能会返回一个本身无序的集合?是的,从技术上讲,entrySet本身无法访问位置,但entrySet.iterator()可以。迭代器让我们有一个有序列表。我想知道这个答案是否正确,但正如Jonathan指出的,
entrySet()
返回一个集合。Jpatrick说,集合的迭代器让我们有一个有序列表,但说“元素不按特定顺序返回(除非该集合是某个提供保证的类的实例)。”这里引用的文档中没有一个说entrySet()返回一个集合,该集合是保证顺序的类的实例。我遗漏了什么吗?Michael Myers正确地指出了说明LinkedHashMap定义了迭代顺序的文档,但没有说明如何访问该顺序
entrySet()。迭代器()
是一种似乎可行的方法,但它可以依赖吗?在这里找到了一个明确的答案:“映射的顺序定义为映射集合视图上迭代器返回元素的顺序。”--javadoc for
map
entrySet()链接的API文档
不要说任何保证正确订购的话。该页面上唯一相关的声明是“该类[即HashMap]不保证映射的顺序;特别是,它不保证随着时间的推移顺序将保持不变。”您在该链接中指的是什么?