Java中Vector中的元素数量是否有限制?

Joo*_*ost 2 java

Vector类的Java是否对它可以存储的元素数量有限制?我知道它会自动增长,并且应该能够存储任意数量的元素,但是是否有任何限制可以限制实际存储的元素数量?除了最明显的限制,如耗尽内存.

JB *_*zet 7

有两个限制:

  • 记忆量
  • 最大整数值(Integer.MAX_VALUE),因为基础数组中的元素由整数索引索引

旁注:如果您打算使用Vector,那么请不要.使用ArrayList,它不是同步的,更适合集合框架的其余部分.


Fre*_*Foo 5

由于size()a Vector是a int,它是32位有符号整数,所以元素的最大数量是2**31-1或大约21亿个元素.


Jon*_*eet 5

首先,除非你使用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)