正如 LinkedHashMap 的 javadoc 中所指定的,如果将键重新插入到映射中,插入顺序不会受到影响,但在运行下面的程序时,我注意到在更改访问顺序时再次插入相同的键。
Map<Integer, String> map = new LinkedHashMap<Integer,String>(16, .75f, true);
map.put(new Integer(1), "Ajay");
map.put(new Integer(2), "Vijay");
map.put(new Integer(3), "Kiran");
map.put(new Integer(4), "Faiz");
for(String value:map.values()){
System.out.println(value);
}
String val =map.get(new Integer(3));
map.put(new Integer(2), "Ravi");
System.out.println("After changes...");
for(String value:map.values()){
System.out.println(value);
}
在运行上面的程序时,我得到的o/p如下:
Ajay
Vijay
Kiran
Faiz
After changes...
Ajay
Faiz
Kiran
Ravi
当我重新插入密钥 2 时,为什么它的访问顺序发生了变化。
请帮助我理解o/p。
Thanks,
new LinkedHashMap<Integer,String>(16, .75f, true);
接着就,随即true
您指定需要“访问顺序”映射,而不是“插入顺序”映射。
这意味着您将按照访问顺序获取值(首先是最近最少访问的)。
两者都是你的get
and put
调用构成“访问”。
提供了一个特殊的构造函数来创建链接哈希映射,其迭代顺序是其条目最后访问的顺序,从最近最少访问到最近访问(访问顺序)。这种映射非常适合构建 LRU 缓存。调用 put 或 get 方法会导致对相应条目的访问(假设调用完成后该条目存在)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)