美文网首页
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