2013-10-29 28 views
3

例如,在傳統的陣列中,我將宣佈一個這樣的數組:在聲明它之後是否有設置數組列表大小的方法?

int array[]; 

然後,我以後會初始化像這樣

array = new int[1000]; 
在一個ArrayList

我試圖做相同,但我只能初始化它,同時聲明如下。

ArrayList<String> array = new ArrayList<>(1000); 

它幾乎一樣

int[] array = new int[10000]; 

所以我想知道是否有初始化一個ArrayList,例如1000,它是在一個單獨的聲明中被宣佈後一種方式。

+1

爲什麼要刪除數組列表的大小? – CodingBird

+3

ArrayList javadoc,去 – clwhisk

+0

我在寫一個程序,用戶輸入數組列表的初始容量,這將是數組的大小。 – answerSeeker

回答

4

您可以使用ensureCapacity(int)

ArrayList<Integer> al = new ArrayList<>(); 

al.ensureCapacity(1000); 

重要的是要注意,數組列表會動態調整自己雖然。

所以,我想知道是否有一種方法來初始化一個arraylist例如1000後,它已被聲明在一個單獨的聲明。

你總是可以做到這一點,太:

ArrayList<Integer> al; 

al = new ArrayList<Integer>(1000); 

這更像是常規的陣列初始化。

+0

這可能是我正在尋找的。 – answerSeeker

+0

@TakakaiWasumi重新閱讀您的問題後,查看我的編輯。 – azz

+0

看到您的編輯後,這正是我所尋找的。謝謝。 – answerSeeker

1

是不一樣的數組聲明大小,它是初始大小你傳遞

你仍然可以超越1000運行時的List情況下,而不是在陣列

ArrayList動態將增長如需要的尺寸,1000這裏是下ArrayList

+1

我已經閱讀某處,如果數組列表具有初始容量,它將比沒有數組的列表更優化 – answerSeeker

+1

如果您知道需要100個元素,您應該在正式聲明時告訴它,它會根據大小如果你不告訴它,默認情況下它將保留大小爲10的數組,並且在你繼續添加時它將不得不執行分配和移動數據10次,這是較慢的 –

1

沒有理由這樣做,除了性能方面的原因包裹陣列的初始大小,但您可以使用ensureCapacity method.

ArrayList<String> array = new ArrayList<String>(100); 
//code, code, code, ask user size of ArrayList 
array.ensureCapacity(someUserInputSize); 
+1

你已經確保了容量爲100 '用構造函數的參數。 –

+1

如果需要,'ensureCapacity'將允許您確保容量大於'100'。如果你真的想要,你可以在'if'語句中調用'ensureCapacity',但是如果你在已經保證容量超過50的'ArrayList'上調用'ensureCapacity(50)',它不會做任何事情。如果你在一個沒有這個容量的'ArrayList'上調用'ensureCapacity(200)',你會確保它。 – nhgrif

+0

這是正確的,但並沒有真正回答(不可否認的)問題。 –

0

我想知道是否有一種方法來初始化一個arraylist例如1000後,它已被聲明在一個單獨的聲明。

你可以先聲明它,然後再對其進行初始化,就像數組:

ArrayList<String> array; 

... 

array = new ArrayList<>(1000); 

但只是讓你知道,這ArrayList(int)構造函數的參數是的的初始容量支持數組,而不是大小 - 它只是一個優化可以做的,如果知道預期的大小ArrayList。以這種方式實例化的ArrayList將仍然是,直到添加元素。

相關問題