HashMap LinkHashMap HashTable 区别和联系

HashMap LinkHashMap HashTable 特性

HashMap

  • 线性不安全
  • 初始大小16,负载因子0.75,扩容2倍
  • 长度一般为2^n 次方,主要是为了效率碰撞较少
  • 数组+链表方式
  • key可以为null,做了处理
  • 继承AbstractMap,实现Map方法
  • 重新计算hash值

LinkHashMap

  • 线性不安全
  • 初始大小16,负载因子0.75,扩容2倍
  • 长度一般为2^n 次方,主要是为了效率碰撞较少
  • 数组+双向链表方式
  • key可以为null,做了处理
  • 继承AbstractMap,实现map方法
  • 重新计算hash值
  • LRU算法,保留6个值,后面

HashTable

  • 线性安全的基本上方法都有synchronized关键字
  • 初始大小11,负载因子0.75,扩容2n+1
  • 长度一般为2^n 次方,主要是为了效率碰撞较少
  • 数组+链表方式
  • key不可以为null,会抛异常
  • 继承Dictionary类,实现Map方法
  • 直接使用对象的hashCode

hashCode 和 equal == 区别

== 就是判断值是否相等
equal是判断引用,判断对象是否相等
hashCode是对象的hash值
HashMap只有在碰撞的时候hash值一样进行equal判断,如果相等则舍弃,如果不相等插入链表中
hash处理冲突有:链式(拉链)法和开放地址法

你可能感兴趣的:(HashMap LinkHashMap HashTable 区别和联系)