你能确定Java Collection的初始容量吗?

时间:2012-08-30 15:24:22

标签: java collections

在Java中,有没有办法确定用于创建Collection的初始容量?

所以当像这样创建一个集合时:

List<Object> objectList = new ArrayList<Object>(5);

有没有办法告诉objectList创建的初始容量为5?

3 个答案:

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