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?