美文网首页
HashTable,HashMap,LinkedHashMap

HashTable,HashMap,LinkedHashMap

作者: Ylm007 | 来源:发表于2020-05-11 23:20 被阅读0次

    HashTable

    • 常用的变更方法都有sync修饰,是线程安全的
    • 原生hashCode % size的方式计算index
    • resize方法性能一般
    • 应该不再维护了
    • 初始化cap=11
    • 强制校验value不能为null

    HashMap

    • 常用方法没有加锁,线程不安全
    • hashCode方法的优化,高位移动到低位,以进一步散列
    • haseCode & (size-1)的方式计算index
    • resize方法比较有意思,
    • 当一个Entry链表长度超过8时,转红黑树,以提高查询效率


      resize过程

    TreeMap

    • 对key使用指定的比较器进行排序

    LinkedHashTable

    • Entry相对于HashTable,新增了双向链表
    • 双向链表维护写入顺序或者访问顺序,accessOrder来控制
    • get方法并没有实现LRU,contain方法和迭代器访问双向链表,可以提速

    共同点

    • 负载因子
    • 扩容时,可能大部分结点都比较空,负载并不一定高
    • key有上限,hashCode时int类型
    • 变更操作使用mdCount,实现fast-fail

    相关文章

      网友评论

          本文标题:HashTable,HashMap,LinkedHashMap

          本文链接:https://www.haomeiwen.com/subject/cfjmnhtx.html