max. length of List in Java
What is the maximum length of List in java? I mean that how many maximum elements开发者_如何学运维 can store in list?
Integer.MAX_VALUE
or heap which ever is low will be the limit
It's very likely that you will run out of heap space well before you get anywhere close to Integer.MAX_VALUE
number of elements, but let's see what would happen if we had infinite memory and tried to add more than Integer.MAX_VALUE
elements to a List
:
1) ArrayList:
An ArrayList will try to increase its capacity:
int newCapacity = (oldCapacity * 3)/2 + 1;
This calculation will overflow and newCapacity
will actually be less than Integer.MAX_VALUE
. The ArrayList
will then try to copy the elements in the original array to a smaller array and will hence lose elements.
2) LinkedList:
A LinkedList
works a bit better once you cross the Integer.MAX_VALUE
limit. It will continue to hold elements, however the size
attribute will suffer from integer overflow and will affect other operations that make use of it.
This depends on the specific list implementation. Most people think it's Integer.MAX_VALUE
but it isn't limited to that. In fact the documentation of the size()
method merely states:
If this list contains more than
Integer.MAX_VALUE
elements, returnsInteger.MAX_VALUE
.
So it might as well contain more elements.
精彩评论