LinkedHashMap 简介
- 定义: LinkedHashMap 是根据插入或访问顺序实现有序输出的HashMap
- 数据结构 : HashMap + 双向链表
- 使用示例:
//普通HashMap
Map<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(3, "order3");
hashMap.put(1, "order1");
hashMap.put(2, "order2");
hashMap.forEach((key, value) -> System.out.println(key + "-->" + value));
输出结果:
1-->order1
2-->order2
3-->order3
//迭代顺序和插入顺序保持一致
Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>();
linkedHashMap.put(3, "order3");
linkedHashMap.put(1, "order1");
linkedHashMap.put(2, "order2");
linkedHashMap.forEach((key, value) -> System.out.println(key + "-->" + value));
输出结果:
3-->order3
1-->order1
2-->order2
//迭代顺序和查询顺序保持一致
Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>(16, 0.75f, true);
linkedHashMap.put(3, "order3");
linkedHashMap.put(1, "order1");
linkedHashMap.put(2, "order2");
linkedHashMap.get(3);
linkedHashMap.forEach((key, value) -> System.out.println(key + "-->" + value));
输出结果:
1-->order1
2-->order2
3-->order3
// 插入和删除元素后不影响迭代顺序
Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>(16, 0.75f, true);
linkedHashMap.put(3, "order3");
linkedHashMap.put(1, "order1");
linkedHashMap.put(2, "order2");
linkedHashMap.get(3);
linkedHashMap.remove(1);
linkedHashMap.put(4, "order4");
linkedHashMap.forEach((key, value) -> System.out.println(key + "-->" + value));
输出结果:
2-->order2
3-->order3
4-->order4
- 使用场景: LRU 缓存过期策略 (通过 LinkedHashMap 的访问顺序实现)
版权声明:本文为weixin_38687303原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。