簡體   English   中英

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

[英]Is there a limit to the amount of elements in a Vector in Java?

Vector類的Java是否對它可以存儲的元素數量有限制? 我知道它會自動增長並且應該能夠存儲任意數量的元素,但是有任何限制可以限制實際存儲的元素數量嗎? 除了最明顯的限制,如耗盡內存。

有兩個限制:

  • 記憶量
  • 最大整數值( Integer.MAX_VALUE ),因為基礎數組中的元素由整數索引索引

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

由於Vectorsize()是一個int ,它是一個32位有符號整數,因此最大元素數是2 ** 31-1或大約21億個元素。

首先,除非您使用的是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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM