我正在阅读LinkedHashMap
的Javadoc,其中提到了:
putAll方法为每个映射生成一个条目访问权限 指定的映射,按键提供的顺序映射的顺序 指定的map的条目设置迭代器。
我的问题是,“每个映射的一次访问权限”是什么意思。如果有人能帮助提供一个澄清这一点的例子,将不胜感激。
答案 0 :(得分:3)
此段落适用于使用the special constructor创建的地图,该地图根据上次访问顺序(相对于标准LinkedHashMap的插入顺序)生成迭代顺序。
它只是说,如果地图中有一个键K
,而您putAll(someOtherMap)
也包含someOtherMap
,那么这将被视为对K
的访问权限{1}}它将被移动到地图的末尾(从迭代顺序的角度来看)。
换句话说,从访问角度来看,K
相当于putAll
(伪代码)。
已举例:
for (Entry e : entries) map.put(e);
答案 1 :(得分:3)
注释(“putAll方法为指定映射中的每个映射生成一个条目访问权限,按照指定映射的条目集迭代器提供的键值映射的顺序。”)应该在API文档中查看上下文。以下是包含上下文的完整API文档:
提供了一个特殊的构造函数来创建链接的哈希映射,其迭代顺序是其条目上次访问 的顺序,从最近访问到最多 - 最近(访问顺序)。这种地图非常适合构建LRU缓存。调用put或get方法会导致访问相应的条目(假设它在调用完成后存在)。 putAll方法为指定映射中的每个映射生成一个条目访问,按照指定映射的条目集迭代器提供键 - 值映射的顺序。没有其他方法可以生成入口访问......
本节描述了定义“访问”的内容,它影响“上次访问”的确定。在这种情况下,它继续描述如何处理关于映射访问的put / get和putall。 put(k,v)和get(k)被视为每个访问。类似地,putAll()被视为由条目集维护的所有映射的一个访问。您可以想象这样,对于每个putAll(),所有映射的访问计数器将按照条目集维护的顺序增加1。
希望这就是你要找的东西。
答案 2 :(得分:1)
LinkedHashMap
保留将元素放入其中的顺序。
putAll方法用于将指定映射中的所有映射复制到此映射。
将指定地图中的所有映射复制到此地图(可选操作)。对于在指定映射中从键k到值v的每个映射,此调用的效果等效于在此映射上调用put(k,v)的效果。如果在操作正在进行时修改了指定的映射,则此操作的行为是未定义的。
“每个映射的一个条目访问”意味着对于从指定映射中的键k到值v的每个映射,putall调用的效果等效于在此映射上调用put(k,v)的效果。