image-20240420163459407

LinkedHashMap

LinkedHashMap的特点

  1. LinkedHashMap继承自HashMap,底层是通过HashMap实现的,所以具有HashMap的特点
  2. LinkedHashMap是有序的,可以按照插入顺序或者访问顺序进行排序
  3. LinkedHashMap可以通过构造方法指定排序方式,有三种排序方式:插入顺序、访问顺序、自定义排序
  4. LinkedHashMap的排序方式是通过维护一个双向链表实现的,所以插入和删除元素的效率比HashMap低
  5. LinkedHashMap 在HashMap的基础上重写了afterNodeAccess、afterNodeInsertion、afterNodeRemoval方法,实现了有序的功能

LinkedHashMap如何实现LRU缓存

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private int capacity;

public LRUCache(int capacity) {
super(capacity, 0.75f, true);
this.capacity = capacity;
}

@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
}