目录
HashMap底层数据结构
数组 + 链表 + 红黑树 。
或者直接说 哈希表 。
存储的基本原理
底层是一个数组(有下标,顺序存储,查询快)。
链表(哈希冲突时,新增的元素挂载到上一个结点下)。
红黑树(链表查询慢,红黑树是一种平衡二叉树,查询效率高)。
源码分析
代码
语句:HashMap<String,String> map = new HashMap<>();
创建一个HashMap<k,v>类型的集合。
语句:map.put("落花","流水");
给集合存入数据。 k = "落花" ,v = "流水" 。
一、进入 HashMap
this.loadFactor 是 HashMap 里的一个属性。
DEFAULT_LOAD_FACTOR 是一个常量,进入看一眼。
DEFAULT_LOAD_FACTOR -- 默认的加载因子。
此刻 DEFAULT_LOAD_FACTOR = 0.75f 。f 代表是 float 类型的。
loadFactor = 0.75f 。
二、进入 put
前面说过: key = "落花" 。value = "流水" 。
hash(key) -- 表示计算 key 的哈希值。(可以变相的理解为地址值)
然后是将 hash(key), key, value, 作为参数传到了 putVal 方法中。
接下来看一下putVal方法。
二、1. putVal
有这么一堆东西,咱们慢慢来看。
1、