java - hashmap 如何识别何时需要重新散列
问题描述
Hashmap 如何识别此存储桶已满并且需要重新散列,因为如果两个哈希码相同,它将值存储在链表中,然后根据我的理解,此链表没有任何固定大小,它可以存储尽可能多的元素所以这个桶永远不会满,那么它将如何识别它需要重新散列?
解决方案
Hashmap在向hashmap插入数据和从hashmap获取数据的过程中保持了O(1)的复杂度,但是对于第13个键值对,put request将不再是O(1),因为一旦map意识到第13个元素进来了,即 75% 的地图已填满。
它将首先将存储桶(数组)容量加倍,然后再进行 Rehash。重新散列需要重新计算已经放置的 12 个键值对的哈希码,并将它们放在新的索引处,这需要时间。
推荐阅读
- reactjs - 反应条纹 3d 安全
- android - 如何在android中一起使用ffmpeg进行文本和gif叠加
- c - C - 从函数返回浮点值并打印它们
- amazon-cognito - Cognito - 无法为用户添加 cognito:groups
- node.js - Knex.js 忽略了外键约束
- c++ - 通过正则表达式隐藏/折叠/调暗任意代码行(例如隐藏日志记录)
- java - 如何从多个属性的redis缓存中过滤数据
- python - 如何检查文件是否为空?
- flutter - 从 Dart 中的函数返回一个类
- kubernetes - 如何在client-go中使用当前上下文以外的上下文来访问多个集群?