在Java中,有没有任何方法可以确定创建集合时使用的初始容量?
所以当一个集合像这样创建时:
List<Object> objectList = new ArrayList<Object>(5);
有什么方法可以告诉objectList
是以5的初始容量创建的吗?
否,ArrayList类至少不会跟踪传入的原始Capacity值。
如果您担心ArrayList上的操作需要调整内部数组的大小,则可以始终调用ArrayList.ensureCapacity(int)
。
据我在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()将只返回添加的元素数。