📜  Java LinkedHashMap(1)

📅  最后修改于: 2023-12-03 14:42:15.108000             🧑  作者: Mango

Java LinkedHashMap

简介

Java 的 LinkedHashMap 实现了 Map 接口并维护着它们的插入顺序,即一个元素的插入顺序就是它们在 Map 中出现的顺序。此外,还可以通过指定 accessOrder 为 true 来按访问顺序来排序元素。

优势
  • 维护插入/访问顺序,对于需要保证元素有序的场合非常适用。
  • 可以通过 accessOrder 来按访问顺序排序元素。对于缓存等场景非常实用。
  • 与 HashMap 相比,HashMap 只保证元素无序存储。LinkedHashMap 可以继承 HashMap 的高效性能,在保持有序的情况下还提高访问效率。
代码示例
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put(3, "c");
linkedHashMap.put(1, "a");
linkedHashMap.put(2, "b");

for (Map.Entry<Integer, String> entry : linkedHashMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}
// 按插入顺序输出
// 3 c
// 1 a
// 2 b

linkedHashMap = new LinkedHashMap<>(16, 0.75f, true);
linkedHashMap.put(3, "c");
linkedHashMap.put(1, "a");
linkedHashMap.put(2, "b");

linkedHashMap.get(1);

for (Map.Entry<Integer, String> entry : linkedHashMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}
// 按访问顺序输出
// 2 b
// 3 c
// 1 a
参数介绍
  • accessOrder:排序方式,默认为 false。false 表示按插入顺序排序,true 表示按访问顺序排序。
  • initialCapacity:初始化大小,默认为 16。
  • loadFactor:加载因子,默认为 0.75f。
  • removeEldestEntry:可以重写此方法,当满足一定条件时,移除最老的 entry。