利用 LinkedBlockingQueue
的属性 accessOrder
即可,代码如下所示:
public static void main(String[] args) {
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>(10,0.5f, true);
linkedHashMap.put("1","1");
linkedHashMap.put("2","2");
linkedHashMap.put("3","3");
linkedHashMap.put("4","4");
linkedHashMap.get("1");
linkedHashMap.forEach((k,v)->{
System.out.println(k);
});
linkedHashMap.get("3");
linkedHashMap.forEach((k, v) -> {
System.out.println(k);
});
}
输出结果:
两个输出语句输出顺序不一样是因为被访问到的元素会被插入到链表末尾,所以顺序不一样,此时元素1、2其实就可认为是最近没有使用的元素,就会被淘汰。