一.单线程下的HashMap(JDK1.8)
HashMap类主要用来处理具有键值对特征的数据,随着JDK版本的更新中,JDK1.8对HashMap的底层进行了一些优化
HashMap是基于哈希表对map接口的实现,HashMap具有较快的访问速度,但是遍历顺序却是不确定的
HashMap提供所有可选的映射操作,并允许使用null值和null键
代码语言:javascript复制new HashMap<>().put(null,null);
HashMap并非线程安全,当存在多个线程同时写入HashMap的时候,可能会导致数据的不一致
hashMap有以下几个关键词
- LoadFactor称为负载因子,默认值为0.75
- threshold表示所能容纳的键值对临界值,threshold计算公式为数组长度 * 负载因子
- size是HashMap中实际存在的键值对数量
- modCount字段用来记录hashMap内部结构发生变化的次数
- HashMap的默认容量INITIAL_CARACITY为16
HashMap采用了数组 链表 红黑树的存储方式,HashMap的数组部分称为哈希桶,当链表长度大于8时,链表数据将以红黑树的形式进行储存,当降到6时就用链表