在Java中,有没有办法确定用于创建Collection的初始容量?
所以当像这样创建一个集合时:
List<Object> objectList = new ArrayList<Object>(5);
有没有办法告诉objectList
创建的初始容量为5?
答案 0 :(得分:5)
不,传入originalCapacity值的ArrayList类至少为does not keep track。
如果您担心ArrayList上的操作需要调整内部数组的大小,您可以随时调用ArrayList.ensureCapacity(int)
。
答案 1 :(得分: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();
答案 2 :(得分:0)
你做不到。即使您将项目添加到集合中,“toArray(...)”生成的数组也只是添加项目的长度。此外,size()只会返回添加的元素数。