2016 - 2024

感恩一路有你

hashmap原理面试 hashmap在,扩容,时为什么是乘以2?

浏览量:1609 时间:2021-03-11 08:53:57 作者:admin

hashmap在,扩容,时为什么是乘以2?

模运算可以通过位运算H&(length-1)得到,所以效率最高

~]。。。

没有容量扩展的示例:

如果10个存储桶中有1W数据,并且每个存储桶平均有1000个数据,那么即使jdk8中默认有8个以上的存储桶,它也会将您变成一棵红黑树,那么您查找元素的平均时间是log(base 2)1000。

另一方面,如果扩容。过程同上,但平均时间会大大缩短。

还有谁说12个会扩大?这只是默认值。

JDK文档明确建议在初始化HashMap时,应根据将来存储的数据量一次性指定其容量和加载因子。尽量避免扩展(这将导致额外的成本),同时,它不应该浪费内存

1。存储方法:Java中的HashMap以键值的形式存储元素。2、 调用原则:HashMap需要一个hash函数,该函数使用hashcode()和equals()方法向集合中添加和检索元素。调用put()方法时,HashMap计算密钥的哈希值,并将密钥-值对存储在集合中相应的索引中。如果键已存在,则该值将更新为新值。3、 其他热点特性:HashMap的一些重要特性是容量、负载因子和阈值调整。

HashMap实现了map接口,主要为客户提供三种数据显示方式:只查看键列表;只查看值列表;或者以键值形式成对查看数据。map接口没有定义如何存储数据,也没有指定如何确定键是否相同。因此,并非所有map实现都与hashcode方法相关。例如,treemap要求对象实现comparator接口,并通过其compare方法(而不是hashcode和equals)比较两者是否一致。同样,如果我们自己实现map接口,也可以直接用数组来存储数据,用==来判断键值是否一致,这样仍然可以完全满足map接口的定义。

hashmap原理面试 hashmap面试扩容机制 hashmap默认长度和扩容

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。