Ebb*_*ham 36 java performance hashmap
是否存在可以存储在HashMap中的键条目数的理论限制,还是纯粹依赖于可用的堆内存?
另外,哪种数据结构最好存储大量对象(比如数十万个对象)?
aio*_*obe 43
是否存在可以存储在HashMap中的键条目数量的理论限制,还是纯粹依赖于可用的堆存储?
看一下那个类的文档,我会说理论上的限制是Integer.MAX_VALUE(2 31 -1 = 2147483647)个元素.
这是因为要正确实现此类,该size()方法必须返回int表示键/值对的数量.
从文档中 HashMap.size()
返回:此映射中键 - 值映射的数量
注意:此问题与列表最多可容纳的数据非常相似.
哪种数据结构最好存储大量对象(比如几十万个对象)?
我想说这取决于你需要存储什么以及你需要什么类型的访问.所有内置系列都可能针对大批量进行了优化.
Boz*_*zho 11
HashMap将值保存在一个数组中,该数组最多可以容纳Integer.MAX_VALUE.但这并不算碰撞.每个Entry都有一个next字段,也是一个条目.这就是如何解决冲突(具有相同哈希码的两个或多个对象)的方式.所以我不会说有任何限制(除可用内存外)
请注意,如果超过Integer.MAX_VALUE,你会从一些方法得到意想不到的行为,如size(),但get()并put()仍然可以工作.它们将起作用,因为hashCode()任何对象都将返回一个int,因此根据定义,每个对象都将适合地图.然后每个对象将与现有对象发生碰撞.
| 归档时间: |
|
| 查看次数: |
27332 次 |
| 最近记录: |