LinkedHashMap是什么?它有哪些特点?
LinkedHashMap是HashMap的一个子类,它保留了HashMap的所有特性,同时增加了保持键值对插入顺序的能力。
在HashMap中,元素的排列顺序是无序的,这是因为元素的位置是通过哈希函数计算得到的。但在LinkedHashMap中,可以按照元素的插入顺序或者访问顺序来遍历元素。
LinkedHashMap内部维护了一个双向链表,每次插入一个新元素,就将其添加到链表的尾部。这样,当我们遍历LinkedHashMap时,就可以按照元素插入的顺序来进行。
在创建LinkedHashMap时,可以选择是否按照访问顺序来排序。如果按照访问顺序来排序,那么每次访问一个元素,这个元素就会被移动到链表的尾部。这种特性使得LinkedHashMap可以用来实现LRU(Least Recently Used,最近最少使用)缓存策略。
以下是一个简单的例子,展示了如何使用LinkedHashMap:
import java.util.LinkedHashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// 输出元素,可以看到元素的顺序与插入顺序一致
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
运行这段代码,你会看到如下输出:
One: 1
Two: 2
Three: 3
这表明元素的顺序与插入顺序一致。