Vector类的Java是否对它可以存储的元素数量有限制?我知道它会自动增长,并且应该能够存储任意数量的元素,但是是否有任何限制可以限制实际存储的元素数量?除了最明显的限制,如耗尽内存.
有两个限制:
Integer.MAX_VALUE),因为基础数组中的元素由整数索引索引旁注:如果您打算使用Vector,那么请不要.使用ArrayList,它不是同步的,更适合集合框架的其余部分.
首先,除非你使用Java 1.1,否则通常应该使用ArrayList<E>而不是Vector.但是,两者都有相同的局限性.
基本上,它们由数组支持,并具有int当前"实际"长度的内部值.因此,基于此,您将无法存储多于Integer.MAX_VALUE条目.但是,在你达到这一点之前,你很可能会耗尽内存.
事实上,ArrayList我正在考虑的实施有一个略小的限制,内部强加:
/**
* The maximum size of array to allocate.
* Some VMs reserve some header words in an array.
* Attempts to allocate larger arrays may result in
* OutOfMemoryError: Requested array size exceeds VM limit
*/
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
Run Code Online (Sandbox Code Playgroud)