什么是HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
ConcurrentHashMap结构
根据上述,知道ConcurrentHashMap的目标,接下来就是看该目标需要解决哪些问题。
以put()方法为例:
● 计算出key的槽位
● 根据槽位类型进行操作(链表,红黑树)
● 根据槽位中成员数量进行数据转换,扩容等操作