8月16日

HashMap

  1. HashMap是线程不安全的
  2. 允许key和value为null
  3. 不保证存储的有序性
  4. 影响HashMap性能的两个变量,init capacity(16)和loadFactor(0.75),load链表长度,减少Hash
  5. faile-fast机制,不允许迭代遍历时remove,add
  6. 1.7和1.8jdk版本的数据存储结构.Entry,数组+链表。Node,数组+链表/红黑树
  7. 扩容大小2倍,容量为2次幂,方便获取捅数组位置提高效率
  8. HashSet基于HashMap实现,value为object对象

HashTable

  1. 线程安全,synchronize修饰方法
  2. key,value不为null
  3. 不保证有序性
  4. initcapcity(11) loadFactor 0.75
  5. 扩容大小2倍+1,容量为奇数或者素数,使哈希更加均匀

ConcurrentHashMap

  1. 并发容器,多线程下更加高效
  2. key或者value不为null
  3. cas无所操作。inittable初始化.SIZECTl,synchronnize
  4. 扩容,rehash