在 Java 中,有什么方法可以确定用于创建Collection的初始容量?
因此,当这样创建集合时:
List<Object> objectList = new ArrayList<Object>(5);
有什么方法可以告诉它objectList
是用 5 的初始容量创建的吗?
在 Java 中,有什么方法可以确定用于创建Collection的初始容量?
因此,当这样创建集合时:
List<Object> objectList = new ArrayList<Object>(5);
有什么方法可以告诉它objectList
是用 5 的初始容量创建的吗?
不,ArrayList 类至少不会跟踪传入的 originalCapacity 值。
如果您担心需要调整内部数组大小的 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() 只会返回添加的元素数。