import java.util.LinkedHashMap; /*实现一个最近最少使用LRU(Least Recently Used)的缓存并为这个缓存增加大小限制 @SuppressWarnings({ "unchecked", "serial", "rawtypes" }) |
LinkedHashMap 1.在HashMap的构造函数中,调用了init方法,而在HashMap中init方法是空实现,但LinkedHashMap重写了该方法,所以在LinkedHashMap的构造方法里,调用了自身的init方法 @Override 2.LinkedHashMap有自己的静态内部类Entry,它继承了HashMap.Entry Entry(int hash, K key, V value, HashMap.Entry<K,V> next) { 3.所以LinkedHashMap构造函数,主要就是调用HashMap构造函数初始化了一个Entry[] table,然后调用自身的init初始化了一个只有头结点的双向链表。 举个栗子: 开始时,HashMap中有Entry1、Entry2、Entry3,并设置LinkedHashMap为访问顺序 则更新Entry1时: 会先把Entry1从双向链表中删除,然后再把Entry1加入到双向链表的表尾,而Entry1在HashMap结构中的存储位置没有变化 |