HashMap总结与比较

总结

上一篇文章讲了一些我理解的HashMap,这里我们总结概括一下,包括和其他集合的比较

1.HashMap特点

  • 底层是散列表+红黑树。初始容量为16,装载因子为0.75,每次扩容2倍
  • 允许为null,存储无序
  • 非同步,也就是说是线程不安全的
  • 散列表容量大于64且链表大于8时,转成红黑树
  • Key的哈希值会与该值的高16位做异或操作,进一步增加随机性
  • 当散列表的元素大于容量*装载因子时,会再散列,每次扩容2倍
  • 如果hashCode相同,key不同则替换元素,否则就是散列冲突

2.与ConcurrentHashMap比较

  • 底层是散列表+红黑树,支持高并发操作
  • key和value都不能为null
  • 线程是安全的,利用CAS算法和部分操作上锁实现
  • get方法是非阻塞,无锁的。重写Node类,通过volatile修饰next来实现每次获取都是最新设置的值
  • 在高并发环境下,统计数据(计算size…等等)其实是无意义的,因为在下一时刻size值就变化了。

你可能感兴趣的:(HashMap总结与比较)