LinkedHashMap中的entermentSet()也保证顺序吗?

2022-08-31 12:17:38

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

编辑:此外,通过迭代映射的键并调用 get 来迭代映射是否有任何不利影响?


答案 1

根据Javadocs的说法,是的。

此实现的不同之处在于,它维护一个贯穿其所有条目的双链表。此链表定义迭代顺序,这通常是将键插入到映射中的顺序(插入顺序)。HashMap

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


答案 2

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


推荐