2012-08-30 45 views
1

在Java中,有什麼方法可以確定用於創建Collection的初始容量?當收集是這樣創造您可以確定Java集合的初始容量嗎?

所以:

List<Object> objectList = new ArrayList<Object>(5); 

有沒有辦法告訴與5的初始容量創建objectList

+2

知道你爲什麼要這樣可能很有趣。 –

+1

如果你想知道ArrayList的當前容量,這個問題可能會很有趣。 http://stackoverflow.com/questions/3564837/capacity-of-arraylist其中一個答案有反射黑客可以獲得容量。雖然不是一個好主意。 – Magicode

+0

@dystroy我只是想知道爲什麼你可以設置它,但不能檢查剩餘多少分配的空間。 –

回答

5

否,該ArrayList類。

過去了。如果你擔心在需要內部數組的大小調整ArrayList的操作originalCapacity值的至少does not keep track,可以隨時撥打ArrayList.ensureCapacity(int)

+0

因此,無法確定是否需要調用'ensureCapacity'。我想你不需要知道那個。 –

+2

@Jasper如果在內部數組已經足夠大的情況下調用'ensureCapacity',它就不會執行任何操作。這不會花費你比調用一些假設的函數來檢查大小。 – verdesmarald

0

據我所知,在API中,沒有這樣的方法存在。

但你可以是繼承ArrayList中,像這樣:

class MyArrayList<T> extends ArrayList<T> { 
    private final int initialCapacity; 

    public MyArrayList(final Integer initialCapacity) { 
     super(initialCapacity); 

     this.initialCapacity = initialCapacity;  
    } 

    public Integer getInitialCapacity() { 
     return this.initialCapacity; 
    } 
} 

然後,你可以這樣做:

final List<Integer> li = new MyArrayList<Integer>(5); 
    ((MyArrayList) li).getInitialCapacity(); 
0

你不能。即使您將項目添加到集合中,「toArray(...)」產生的數組也只會是添加項目的長度。此外,size()只會返回添加的元素的數量。

相關問題