`
alph0618
  • 浏览: 55613 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

LinkedHashMap源码解读

    博客分类:
  • java
 
阅读更多

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学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在...Java集合框架源码解读(3)——LinkedHashMap Java集合框架源码解读(4)——WeakHashMap Java集合框架源码解读

    java8源码-JavaRobot:Java学习笔记,JavaLearningNote

    源码解读 String源码系列 List源码系列 ArrayList LinkedList CopyOnWriteArrayList Vector Map源码系列 HashMap LinkedHashMap ConcurrentHashMap TreeMap Hashtable Set源码系列 HashSet LinkedHashSet TreeSet ...

    《Java开发典型模块大全》光盘源码part4(15-21章)

    6. **集合框架**:20章可能详细解读了Java集合框架,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)、Map(HashMap、LinkedHashMap)以及它们之间的关系和选择原则。 7. **IO与NIO**:21章可能深入...

    javajdk1.8源码-Java-source-reading:jdk1.8源代码分析

    限于个人水平出现的解读错误 编辑错误 排版不统一 如发现有错,欢迎指正! 如果对你有用,不妨点个star吧 !(。・ω・。) 近期计划:以jdk为主,java.lang和java.util下一些重要的类以及juc,将来可能会写web框架...

    Android面试复习资料大全(包含java源码)

    2. **Java集合框架**:详细介绍ArrayList、LinkedList、HashMap、TreeMap和LinkedHashMap等集合类的内部实现机制和使用场景。 3. **Java泛型**:理解泛型的概念、在集合和类中的应用以及类型擦除机制。 4. **Java...

    java面试大全

    2. **集合框架**:Java集合框架是面试中的热门话题,包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、LinkedHashMap、TreeMap)等接口及其实现类的使用、性能分析和源码解读。...

    AndroidSourceAnalysis:Android部分原始码分析合集,完整注释过的原始码文件和关键流程的分析

    本资料集"AndroidSourceAnalysis"专注于Android部分源码的分析,特别是对LruCache和哈希图的详细解读,旨在帮助开发者更透彻地掌握Android系统的内存管理和数据结构。 首先,我们来探讨LruCache。LruCache(Least ...

Global site tag (gtag.js) - Google Analytics