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

How many elements can I store in a HashMap object in Java(我可以在 Java 中的 HashMap 对象中存储多少个元素)
本文介绍了我可以在 Java 中的 HashMap 对象中存储多少个元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我知道这取决于系统中的可用内存,也取决于良好的哈希函数,但总的来说,我想知道您使用过的最大映射是什么,以及它是否运行良好盒子或需要任何调整以使其正常工作.

I know that is determined by the memory available in the system, and also depending on a good hash function, but in general I'd like to know what is the biggest map you have used, and if it worked well out of the box or needed any adjustment to make it work adequately.

推荐答案

Java 中的 HashMap 最多可以有 2^30 个桶来存储条目 - 这是因为使用了桶分配技术java.util.HashMap要求bucket的个数是2的幂,由于Java中int是有符号的,所以最大正值是2^31 - 1,所以最大是2的幂是 2^30.

A HashMap in Java can have a maximum of 2^30 buckets for storing entries - this is because the bucket-assignment technique used by java.util.HashMap requires the number of buckets to be a power of 2, and since ints are signed in Java, the maximum positive value is 2^31 - 1, so the maximum power of 2 is 2^30.

然而,实际上没有编程限制可以在 HashMap 中存储多少键/值对 - 一旦通过 2^31,size() 函数将不再准确 -1. 这是因为处理冲突的方式 - 位于同一存储桶中的键/值对是链接的,就像 LinkedList 中的节点一样.

However, there is in fact no programmatic limit on how many key/value pairs you can store in a HashMap - the size() function will just stop being accurate once you pass 2^31 - 1. This is because of the way collisions are handled - key/value pairs that land in the same bucket are linked, like nodes in a LinkedList.

不过,一般来说,如果您在实际应用程序中需要跟踪 2^30 件事情,那么您需要的 RAM 比在一台机器上依赖的要多得多.我在单个 JVM 中使用过的最大的 HashMap 有几千万个条目,都非常轻量级

In general, though, if you're getting anywhere close to 2^30 things you need to keep track of in a real-world application, you need a lot more RAM than you can rely on in one machine. The largest HashMap I've ever worked with that sat in a single JVM had a few tens of millions of entries, all very lightweight

这篇关于我可以在 Java 中的 HashMap 对象中存储多少个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Show progress during FTP file upload in a java applet(在 Java 小程序中显示 FTP 文件上传期间的进度)
How to copy a file on the FTP server to a directory on the same server in Java?(java - 如何将FTP服务器上的文件复制到Java中同一服务器上的目录?)
FTP zip upload is corrupted sometimes(FTP zip 上传有时会损坏)
Enable logging in Apache Commons Net for FTP protocol(在 Apache Commons Net 中为 FTP 协议启用日志记录)
Checking file existence on FTP server(检查 FTP 服务器上的文件是否存在)
FtpClient storeFile always return False(FtpClient storeFile 总是返回 False)