当前位置: 首页 > 面试题库 >

可存储在HashMap中的键(对象)数量的理论极限?

经俊茂
2023-03-14
问题内容

对于可以存储在HashMap中的键条目的数量有理论上的限制吗?或者最大数目纯粹取决于可用的堆内存吗?

另外,哪种数据结构最适合存储大量对象(例如数十万个对象)?


问题答案:

可存储在HashMap中的键条目的数量是否有理论上的限制,还是仅取决于可用的堆内存?

查看该类的文档,我会说理论极限是Integer.MAX_VALUE(2
31 -1 = 2147483647)个元素。

这是因为要正确实现此类,该size()方法必须返回一个int表示键/值对数目的数字。

从文档
HashMap.size()

返回: 此映射中的键值映射数

哪种数据结构最适合存储大量对象(例如几十万个对象)?

我会说这取决于您需要存储的内容以及所需的访问类型。所有内置的集合可能已经针对大量进行了优化。



 类似资料:
  • 我想为可用于查询地图的每个键获取“规范”键对象。看这里: HashMap使用的是相同的多个唯一对象。所以我想从地图中获取实际的密钥,无论使用哪个对象来查询地图,它都将始终是相同的。 有没有办法从地图中获取实际的关键对象?我在界面上看不到任何东西,但可能是我忽略了一些聪明的技巧? (迭代所有条目或键不算数。)

  • 问题内容: 我知道这取决于系统中可用的内存,还取决于良好的哈希函数,但总的来说,我想知道您使用的最大地图是什么,以及是否开箱即用,需要进行任何调整才能使其正常运行。 问题答案: Java中的A 最多可以有2 ^ 30个存储桶来存储条目- 这是因为所使用的存储桶分配技术要求存储桶的数量为2的幂,并且因为ints是用Java签名的,所以最大正值是2 ^ 31-1,因此2的最大乘方是2 ^ 30。 但是

  • 我正在做一个程序。我将用户存储在ArrayList中,所以我有一个UserCollection类作为用户的储存类别。但是鉴于UserCollection被认为是一个数据库,数据库中的每个用户条目都应该有一个唯一的id。最初我有一个userID作为User类中的字段,但现在我试图处理UserCollection中的id部分。如果我使用一个hashmap,其中键将是id,值是User我将如何继续迭代i

  • 问题内容: 我是Java新手。我如何在HashMap中存储整数值数组,之后我将此HashMap写到txt文件中,但此刻目前不重要。我可以存储单个字段,但不能存储数组。有任何想法吗 ? 问题答案: 例如选一个 要不就

  • 问题内容: 我了解在HashMap中,条目(键,值)基于hash(Key.hashCode)->表示存储桶位置的索引放置在存储桶中。如果某个条目已经放置在该位置,则会创建一个链表,并将新条目(如果它具有不同的键->通过equals()方法)放置在链表的开头。 我可以将此概念与ConcurrentHashMap的概念进行关联,但不是存储桶,而是各个线程具有锁的段。而不是条目,有HashEntry(i

  • 我今天面试了,我的面试官问我如何在HashMap中存储具有相同键的多个值?她给了我这个例子—— 我在如何使用HashMap时给了她以下解决方案: 整数是字符串的长度,ArrayList将存储该特定长度的字符串。 面试官说这是使用HashMap的一种方式,但还有另一种方式我不需要ArrayList或任何其他数据结构。在面试期间,我无法想出任何解决方案,现在在谷歌搜索了足够多之后,我仍然一无所获。有人