jdk 基于 8 版本
在平时的开发中,我们会经常用到 LinkedHashMap, 非常有必要了解源码。
LinkedHashMap 基于 HashMap 来实现, 内部借助双向链表来维持访问顺序,可以用来实现 LRU 算法。
使用方式
1
2
3
4
5
6
7
8
9
10
11
12
| public class LinkedHashMapTest {
@Test
void test() {
Map<String, String> map = new LinkedHashMap<>();
map.put("1", "a");
map.put("2", "b");
assertThat(map.remove("1")).isEqualTo("a");
assertThat(map.put("2", "c")).isEqualTo("b");
assertThat(map.get("2")).isEqualTo("c");
}
}
|
对于使用方式来说,LinkedHashMap 和 HashMap 是一样的,只不过 LinkedHashMap 在遍历过程中是有序的, 实现原理是在添加元素时,需要把元素移动到双向链表的尾部,然后遍历时直接取双向链表。