笔记
hashmap是通过数组和单向链表实现的
put方法是:首先计算key的hashcode,定位到核实的数组引索,然后在该引索上的单向链表进行循环遍历用equals比较key是否存在,如果存在就覆盖,不存在就追加。
capacity:容量,默认16
loadfactor:加载因子,默认0.75
当容器中的元素个数大于 capacity*loadfactor时,容器会进行扩容resize 为2n
原文
HashMap的底层是用hash数组和单向链表实现的 ,当调用put方法是,首先计算key的hashcode,定位到合适的数组索引,然后再在该索引上的单向链表进行循环遍历用equals比较key是否存在,如果存在则用新的value覆盖原值,如果没有则向后追加。HashMap的两个重要属性是容量capacity和加载因子loadfactor,默认值分布为16和0.75,当容器中的元素个数大于 capacity*loadfactor时,容器会进行扩容resize 为2n,在初始化Hashmap时可以对着两个值进行修改,负载因子0.75被证明为是性能比较好的取值,通常不会修改,那么只有初始容量capacity会导致频繁的扩容行为,这是非常耗费资源的操作,所以,如果事先能估算出容器所要存储的元素数量,最好在初始化时修改默认容量capacity,以防止频繁的resize操作影响性能。
链接:www.nowcoder.com/questionTer…
来源:牛客网