我可以在Java的HashMap对象中存储多少个元素

问题描述

HashMapJava中的A 最多可以有2 ^ 30个存储桶来存储条目- 这是因为所使用的存储桶分配技术java.util.HashMap要求存储桶的数量为2的幂,并且因为ints是用Java签名的,所以最大正值是2 ^ 31-1,因此2的最大乘方是2 ^ 30。

但是,实际上,在HashMap中可以存储多少个键/值对没有编程上的限制- size()一旦传递2 ^ 31-1,该函数就将不再准确。这是因为处理冲突的方式-键落在同一存储桶中的/ value对被链接起来,就像中的节点LinkedList

但是,总的来说,如果您需要跟踪2 ^ 30个东西,而在实际应用程序中需要跟踪这些东西,则您需要的内存要比在一台计算机上所依赖的要多得多。我曾经在单个JVM中使用过的最大的HashMap拥有数千万个条目,这些条目都很轻巧

解决方法

我知道这取决于系统中可用的内存,还取决于良好的哈希函数,但总的来说,我想知道您使用的最大地图是什么,以及是否开箱即用,需要进行任何调整才能使其正常运行。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”