zoukankan      html  css  js  c++  java
  • HashMap深入分析

    底层实现数据结构

    1.7数组+链表

    思考:为什么不用双向链表

    1.8+的数组+链表+红黑树

    一些重要的变量

    //默认初始容量16
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 
    //容量最大值
    static final int MAXIMUM_CAPACITY = 1 << 30;
    //默认加载因子0.75
    static final float DEFAULT_LOAD_FACTOR = 0.75f;
    //树化的阈值,当桶中链表节点数大于8时,将链表转换为红黑树
    static final int TREEIFY_THRESHOLD = 8;
    //红黑树退化为链表的阈值,当桶中红黑树节点数小于6时,将红黑树转换为链表
    static final int UNTREEIFY_THRESHOLD = 6;
    //最小的树化容量,进行树化的时候,还有一次判断,只有键值对数量大于64时才会发生转换,
    //这是为了避免在哈希表建立初期,多个键值对恰好被放入了同一个链表而导致不必要的转化
    static final int MIN_TREEIFY_CAPACITY = 64;


    待续~~~

    参考:https://blog.csdn.net/samniwu/article/details/90550196

    ==========================================================================           如果您觉得这篇文章对你有帮助,可以【关注我】或者【点赞】,希望我们一起在架构的路上,并肩齐行
    ==========================================================================
  • 相关阅读:
    Android之Activity启动过程
    Android之Application进阶
    Android之Context进阶
    Thread之ThreadLocal
    Android 系统服务与Binder应用服务
    Android Binder
    Android SystemServer
    Android系统服务与服务注册
    Android Binder进阶扁一
    小米商城-题头3
  • 原文地址:https://www.cnblogs.com/amberJava/p/12514810.html
Copyright © 2011-2022 走看看