Lin*_* Ma 6 java linkedhashmap
我正在阅读Javadoc for LinkedHashMap,其中提到了它:
putAll方法为指定映射中的每个映射生成一个条目访问,其顺序为指定映射的条目集迭代器提供键-值映射。
我的问题是,“每个映射一个入口访问”是什么意思。如果有人可以帮助提供一个例子来阐明这一点,将不胜感激。
本段适用于使用特殊构造函数创建的映射,该构造函数使迭代顺序基于最后的访问顺序(与标准 LinkedHashMap 的插入顺序相对)。
它只是说,如果键K位于映射中并且您也调用了putAll(someOtherMap)where someOtherMapcontains K,则这将被视为访问K并且它将被移动到映射的末尾(从迭代顺序的角度来看)。
换句话说,从访问的角度来看,putAll相当于for (Entry e : entries) map.put(e);(伪代码)。
人为的例子:
public static void main(String[] args) throws Exception {
Map<String, String> m = new LinkedHashMap<> (16, 0.75f, true);
m.put("a", "a");
m.put("b", "b");
System.out.println("m = " + m); // a, b
m.put("a", "a");
System.out.println("m = " + m); // b, a
Map<String, String> m2 = new LinkedHashMap<>();
m2.put("b", "b");
m.putAll(m2);
System.out.println("m = " + m); // a, b: putAll was considered as an access
// and the order has changed
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4829 次 |
| 最近记录: |