[英]Is there a limit to the amount of elements in a Vector in Java?
Vector類的Java是否對它可以存儲的元素數量有限制? 我知道它會自動增長並且應該能夠存儲任意數量的元素,但是有任何限制可以限制實際存儲的元素數量嗎? 除了最明顯的限制,如耗盡內存。
有兩個限制:
Integer.MAX_VALUE
),因為基礎數組中的元素由整數索引索引 旁注:如果您打算使用Vector,那么請不要。 使用ArrayList,它不是同步的,更適合集合框架的其余部分。
由於Vector
的size()
是一個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.