你能确定一个Java集合的初始容量吗



在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()将只返回添加的元素数。

最新更新