zl程序教程

您现在的位置是:首页 >  Java

当前栏目

个人对hashMap的部分理解

2023-02-18 16:42:14 时间

一.单线程下的HashMap(JDK1.8)

HashMap类主要用来处理具有键值对特征的数据,随着JDK版本的更新中,JDK1.8对HashMap的底层进行了一些优化

HashMap是基于哈希表对map接口的实现,HashMap具有较快的访问速度,但是遍历顺序却是不确定的

HashMap提供所有可选的映射操作,并允许使用null值和null键

new HashMap<>().put(null,null);

HashMap并非线程安全,当存在多个线程同时写入HashMap的时候,可能会导致数据的不一致

hashMap有以下几个关键词

  1. LoadFactor称为负载因子,默认值为0.75
  2. threshold表示所能容纳的键值对临界值,threshold计算公式为数组长度 * 负载因子
  3. size是HashMap中实际存在的键值对数量
  4. modCount字段用来记录hashMap内部结构发生变化的次数
  5. HashMap的默认容量INITIAL_CARACITY为16

HashMap采用了数组+链表+红黑树的存储方式,HashMap的数组部分称为哈希桶,当链表长度大于8时,链表数据将以红黑树的形式进行储存,当降到6时就用链表