LinkedHashMap继承了HashMap,采用双向链表结构,数据顺序是可预知的
void transfer(HashMap.Entry[] newTable, boolean rehash)
以及
void addEntry(int hash, K key, V value, int bucketIndex) { super.addEntry(hash, key, value, bucketIndex); // Remove eldest entry if instructed Entry<K,V> eldest = header.after; if (removeEldestEntry(eldest)) { removeEntryForKey(eldest.key); } } void createEntry(int hash, K key, V value, int bucketIndex) { HashMap.Entry<K,V> old = table[bucketIndex]; Entry<K,V> e = new Entry<>(hash, key, value, old); table[bucketIndex] = e; e.addBefore(header); size++; }
来实现双向链表。
取数据时,可以选择是按存放顺序取还是访问顺序取:
public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) { super(initialCapacity, loadFactor); this.accessOrder = accessOrder; }
相关推荐
本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在...Java集合框架源码解读(3)——LinkedHashMap Java集合框架源码解读(4)——WeakHashMap Java集合框架源码解读
源码解读 String源码系列 List源码系列 ArrayList LinkedList CopyOnWriteArrayList Vector Map源码系列 HashMap LinkedHashMap ConcurrentHashMap TreeMap Hashtable Set源码系列 HashSet LinkedHashSet TreeSet ...
6. **集合框架**:20章可能详细解读了Java集合框架,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)、Map(HashMap、LinkedHashMap)以及它们之间的关系和选择原则。 7. **IO与NIO**:21章可能深入...
限于个人水平出现的解读错误 编辑错误 排版不统一 如发现有错,欢迎指正! 如果对你有用,不妨点个star吧 !(。・ω・。) 近期计划:以jdk为主,java.lang和java.util下一些重要的类以及juc,将来可能会写web框架...
2. **Java集合框架**:详细介绍ArrayList、LinkedList、HashMap、TreeMap和LinkedHashMap等集合类的内部实现机制和使用场景。 3. **Java泛型**:理解泛型的概念、在集合和类中的应用以及类型擦除机制。 4. **Java...
2. **集合框架**:Java集合框架是面试中的热门话题,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、LinkedHashMap、TreeMap)等接口及其实现类的使用、性能分析和源码解读。...
本资料集"AndroidSourceAnalysis"专注于Android部分源码的分析,特别是对LruCache和哈希图的详细解读,旨在帮助开发者更透彻地掌握Android系统的内存管理和数据结构。 首先,我们来探讨LruCache。LruCache(Least ...