java HashMap 最多放多少个key 不影响查询效率

 我来答
福喜900
推荐于2016-08-26 · TA获得超过6.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:9906万
展开全部
与数量无关,HashMap读取性能主要取决于放入HashMap中的key对象的hashCode方法的实现,即此方法返回值导致的Hash冲突的比例,冲突越多,性能越差。
解释一下。楼上有人说HashMap时间复杂度为O(1),这是理想情况;说与值大小和堆大小相关……属于扯谈。java.util.HashMap的实现是一个标准的hash表+链表结构:
1. HashMap中持有一个数组成员变量table
2. table的每个元素都是一个链表(用于解决冲突)
3. 链表的每个元素Entry都存储着一对key/value
当执行HashMap.put(key, value)的时候:
1) HashMap会根据key.hashCode()方法来决定这一对key/value存储在数组table中的位置
2) 若那个位置上已经有一个链表(发生冲突),则接到链表尾端,否则作为链表头存储
那么当执行HashMap.get(key)的时候,查询过程也是一样的两步:
1) 根据key.hashCode()方法确定在table中的位置
2) 遍历所在位置的链表,若找到equals的key则返回,否则返回null
综上所述,第一步时间复杂度是O(1),第二步却是O(n)(n指链表长度)。所以key.hashCode()导致产生冲突的数量决定了这张HashMap的查询性能。
详细情况可以参见java.util.HashMap源码实现
找红太郎的灰灰
2014-12-28 · TA获得超过285个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:186万
展开全部
数量基本上不会影响查询效率

但是会占很大内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式