📅  最后修改于: 2023-12-03 14:42:54.964000             🧑  作者: Mango
LinkedHashMap是Java中的一种特殊HashMap。它保留了插入顺序,并且还提供了按访问顺序排序的迭代器。在这篇文章中,我们将介绍如何在Java中使用LinkedHashMap。
创建LinkedHashMap与创建HashMap非常相似,只需将HashMap替换为LinkedHashMap即可。以下是创建一个空LinkedHashMap的示例:
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
LinkedHashMap保留了插入顺序,这意味着它会记住元素添加到映射中的顺序。当你遍历映射时,元素会按照它们添加到映射中的顺序返回。例如:
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
for (String key : map.keySet()) {
System.out.println(key);
}
以上代码打印:
apple
banana
cherry
LinkedHashMap还提供了按访问顺序排序的迭代器,这意味着你可以按照最近最少使用(LRU)的顺序迭代元素。例如:
LinkedHashMap<String, Integer> map = new LinkedHashMap<>(10, 0.75f, true); // 设置访问顺序为true
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
map.get("apple"); // 访问“apple”
for (String key : map.keySet()) {
System.out.println(key);
}
以上代码打印:
banana
cherry
apple
注意,我们在创建LinkedHashMap时将第三个参数设置为true,这是启用按访问顺序排序的开关。我们还使用了get()方法来访问“apple”,这使得“apple”成为最近被访问的元素,因此它被放置在了最后一个。
LinkedHashMap还提供了一个保留顺序的构造函数,该构造函数将LinkedHashMap配置为按访问顺序排序,但在访问顺序和插入顺序之间选择。例如:
LinkedHashMap<String, Integer> map = new LinkedHashMap<>(16, 0.75f, true);
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
map.get("apple");
map.put("date", 4);
for (String key : map.keySet()) {
System.out.println(key);
}
输出应为:
banana
cherry
apple
date
我们首先将“apple”添加到映射中,然后访问它以将其置于最前面。然后我们将“date”添加到映射中,但由于“date”是最新的添加,它将在“banana”和“cherry”之前返回。
LinkedHashMap是Java中一个非常有用的类,它保留了插入顺序并提供了按访问顺序排序的迭代器。这使得LinkedHashMap成为实现LRU缓存的理想容器。对于那些需要记住元素添加顺序的应用程序,LinkedHashMap也是一个非常有用的类。