如果我要存储100个数据,开多大的HashMap比较合适

【这是我之前看到的好像一个比较经典的场景题,感觉也涉及比较多的知识点,之前学习记录后没往上发,所以也忘记是学习阅读了哪里的内容了】

如果我要存储100个数据,开多大的HashMap比较合适?

首先需要知道一些知识点:

HashMap会默认给我们初始化一个默认长度为16的数组。达到临界值就会扩容。其临界值的算式如下:

临界值(threshold) = 负载因子(loadFactor) * 容量(capacity)。

loadFactor 是装载因子,表示 HashMap 满的程度,默认值为 0.75,也就是说默认情况下,当 HashMap 中元素个数达到了容量的 3/4 的时候就会进行自动扩容。

那么为什么负载因子要设置成0.75呢,这个是经过了科学测试的。

设置得太小:导致HashMap空间利用率不高,扩容的频率也会更高,扩容的时候需要把数据重新计算哈希排列,这样会影响性能。

设置得太大:产生hash冲突的几率会很高,因为hash冲突的数据会放到同一个链表,这样会加长链表的长度,同样也会影响HashMap的性能。

HashMap扩容:

hashmap扩容分为两步:

  1. 扩容:创建一个新的Entry空数组,长度是原数组的2倍。
  2. ReHash࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值