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

时间:2012-01-15 12:58:42

标签: java

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

3 个答案:

答案 0 :(得分:7)

有两个限制:

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

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

答案 1 :(得分:5)

由于size()的{​​{1}}是Vector,这是一个32位有符号整数,因此最大元素数为2 ** 31-1或大约21亿元件。

答案 2 :(得分: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;