在Java中,有什麼方法可以確定用於創建Collection的初始容量?當收集是這樣創造您可以確定Java集合的初始容量嗎?
所以:
List<Object> objectList = new ArrayList<Object>(5);
有沒有辦法告訴與5的初始容量創建objectList
?
在Java中,有什麼方法可以確定用於創建Collection的初始容量?當收集是這樣創造您可以確定Java集合的初始容量嗎?
所以:
List<Object> objectList = new ArrayList<Object>(5);
有沒有辦法告訴與5的初始容量創建objectList
?
否,該ArrayList類。
過去了。如果你擔心在需要內部數組的大小調整ArrayList的操作originalCapacity值的至少does not keep track,可以隨時撥打ArrayList.ensureCapacity(int)
。
因此,無法確定是否需要調用'ensureCapacity'。我想你不需要知道那個。 –
@Jasper如果在內部數組已經足夠大的情況下調用'ensureCapacity',它就不會執行任何操作。這不會花費你比調用一些假設的函數來檢查大小。 – verdesmarald
據我所知,在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();
你不能。即使您將項目添加到集合中,「toArray(...)」產生的數組也只會是添加項目的長度。此外,size()只會返回添加的元素的數量。
知道你爲什麼要這樣可能很有趣。 –
如果你想知道ArrayList的當前容量,這個問題可能會很有趣。 http://stackoverflow.com/questions/3564837/capacity-of-arraylist其中一個答案有反射黑客可以獲得容量。雖然不是一個好主意。 – Magicode
@dystroy我只是想知道爲什麼你可以設置它,但不能檢查剩餘多少分配的空間。 –