在 LinkedHashMap Javadocs 中提到:
特别是,对 collection-views 的操作不会影响支持映射的迭代顺序。
"collection-views上的操作" 是什么意思?
特别是,对 collection-views 的操作不会影响支持映射的迭代顺序。
"collection-views上的操作" 是什么意思?
这个测试旨在展示它的工作原理。
Map m = new LinkedHashMap(16, 0.75f, true);
m.put(1, 1);
m.put(2, 2);
m.put(3, 3);
System.out.println(m);
m.get(2);
System.out.println(m);
Set keys = m.keySet(); //API: Returns a Set view of the keys contained in this map.
keys.iterator().next();
System.out.println(m);
输出
{1=1, 2=2, 3=3}
{1=1, 3=3, 2=2}
{1=1, 3=3, 2=2}
Map接口的集合视图是由以下方法返回的对象:
Map#keySet()
:返回一个包含Map中所有键的集合。Map#values()
:返回一个包含Map中所有值的集合。Map#entrySet()
:返回一个包含Map中所有映射关系的集合,每个映射关系都以Map.Entry形式存在。对于这些集合视图的操作,指的是对集合视图实例进行的任何方法调用。
如果我理解正确的话,集合视图是通过其抽象(如entrySet、values和keySet)获得的集合。
在这些集合中进行操作不会影响您的LinkedHashMap中对象的访问顺序,当您使用特殊构造函数使您的对象按访问顺序排序时。