hashmap
hashmap和list不同之处,在接口层面就已经体现,hashmap实现map接口,里面的数据是k,v结构
里面结构是数组加链表方式,具体就不介绍了
具体几个基本参数
变量名
作用
DEFAULT_INITIAL_CAPACITY
默认初始大小16
MAXIMUM_CAPACITY
容量最大值
DEFAULT_LOAD_FACTOR
默认扩容因子0.75f
TREEIFY_THRESHOID
节点转化红黑树阈值8
UNTREEIFY_THRESHOID
扩容时候,链表长度小于这个值,退化链表,默认6
MIN_TREEIFY_CAPACITY
容量不超过这个值,即使满足上面条件也无法转化红黑树
具体原理这里就不介绍,可以自行百度
简单介绍,在put 数据时候,会计算key的hash值并和数组长度-1 &运算下计算出下标,key null时候为0,
并检查该数组下标下数据,不存在直接创建node节点,含有属性k,v
存在,就检测这个链表数据是否包含这个key,如果存在,就更新对应的v
不存在,就创建node节点插入
一旦当前容量大于MIN_TREEIFY_CAPACITY 并且链表长度大于等于TREEIFY_THRESHOID,该链表就会转为红黑树
最后会检测整个元素数量是否 大于 容量*扩容因子,大于就扩容
常用基本方法
方法名
作用
put(k,v)
往集合中设置k,v
remove(v)
删除对应的v
get(k)
根据k获取v
size()
获取当前元素数量
isEmpty()
集合是否为空
containKey(k)
集合中是否存在k
clear()
清空集合
Last updated
Was this helpful?