https://www.runoob.com/java/java-collections.html

Java集合 - 图1Java集合 - 图2

ConcurrentHashMap

https://blog.csdn.net/justloveyou_/article/details/72783008

主要就是为了应对hashmap在并发环境下不安全而诞生的,ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,final,CAS等lock-free技术来减少锁竞争对于性能的影响。

hashMap

https://blog.csdn.net/styhm/article/details/111227145

  1. 无序的散列分散存储
  2. jdk1.8 数组+链表+红黑二叉树
  3. 链表的遍历复杂度取决于长度,为O(n),长度>8链表转为红黑二叉树时间复杂度O(logn),长度<6反之
  4. 实例化后初始容量16,默认加载因子0.75 ,这个是空间和时间的调优值

hashmap和hashtable

https://blog.csdn.net/qq_35181209/article/details/74503362
https://blog.csdn.net/qq_42848910/article/details/107779037

1.线程安全与否,同步性不同:多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合;ashtable的实现方法里面都添加了synchronized关键字来确保线程同步
2.key是否可以为null
3.实现方式不同:HashMap继承了AbstractMap,HashTable继承Dictionary抽象类,两者均实现Map接口。
4.初始容量和扩容方式不同
5.hash的计算不同
6.判断集合是否有某个key,hashmap的get()返回null有两种情况
7.支持的遍历种类不同:HashMap只支持Iterator遍历,而HashTable支持Iterator和Enumeration两种方式遍历