我正在使用一个linkedHashMap来保证有人尝试访问它时的顺序。但是,当需要进行迭代时,使用entrySet()返回键/值对是否也可以保证顺序?迭代时不会进行任何更改。
编辑:另外,通过迭代其键并调用get可以遍历地图是否有任何不利影响?
我正在使用一个linkedHashMap来保证有人尝试访问它时的顺序。但是,当需要进行迭代时,使用entrySet()返回键/值对是否也可以保证顺序?迭代时不会进行任何更改。
编辑:另外,通过迭代其键并调用get可以遍历地图是否有任何不利影响?
Answers:
根据Javadocs的说法,是的。
此实现的不同之处
HashMap
在于,它维护一个遍历其所有条目的双向链接列表。此链表定义了迭代顺序,通常是将键插入映射的顺序(insert-order)。
至于编辑,不,它应该可以正常工作。但是,由于避免了在迭代过程中查找映射中的每个键的开销,因此入口集的速度有所提高。
entrySet()
返回一个Set。Jpatrick说,集合的迭代器使我们有一个有序列表,但是docs.oracle.com/javase/6/docs/api/java/util/Set.html#iterator()说:“元素的返回顺序没有特定的顺序(除非该集合是提供保证的某些类的实例。” 并且这里引用的所有文档都没有说entrySet()返回Set,它是保证顺序的类的实例。我想念什么吗?
entrySet().iterator()
是一个合理的方法,但是可以依靠吗?
Map