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

    ==========================================================================           如果您觉得这篇文章对你有帮助,可以【关注我】或者【点赞】,希望我们一起在架构的路上,并肩齐行
    ==========================================================================
  • 相关阅读:
    vim 使用总结
    C语言中的条件编译
    getopt函数
    Linux 命令使用总结
    vim ctags cscope
    shell 定时处理
    shell 脚本中的标准输出
    ubuntu mail 命令发送邮件
    shell 编程中的特殊字符的处理
    system v 消息队列
  • 原文地址:https://www.cnblogs.com/amberJava/p/12514810.html
Copyright © 2011-2022 走看看