Theoretical limit for number of keys (objects) that can be stored in a HashMap?
HashMap
holds the values in an array, which can hold up to Integer.MAX_VALUE
. But this does not count collisions. Each Entry
has a next
field, which is also an entry. This is how collisions (two or more objects with the same hashcode) are resolved. So I wouldn't say there is any limit (apart from the available memory)
Note that if you exceed Integer.MAX_VALUE
, you'll get unexpected behaviour from some methods, like size()
, but get()
and put()
will still work. And they will work, because the hashCode()
of any object will return an int
, hence by definition each object will fit in the map. And then each object will collide with an existing one.
Is there a theoretical limit for the number of key entries that can be stored in a HashMap or does it purely depend on the heapmemory available ?
Looking at the documentation of that class, I would say that the theoretical limit is Integer.MAX_VALUE
(231-1 = 2147483647) elements.
This is because to properly implement this class, the size()
method is obliged to return an int
representing the number of key/value pairs.
From the documentation of HashMap.size()
Returns: the number of key-value mappings in this map
Note: This question is very similar to How many data a list can hold at the maximum.
which data structure is the best to store a very large number of objects(say several hundred thousand objects)?
I would say it depends on what you need to store and what type of access you require. All built in collections are probably well optimized for large quantities.