1

在 Java 中,有什么方法可以确定用于创建Collection的初始容量?

因此,当这样创建集合时:

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

有什么方法可以告诉它objectList是用 5 的初始容量创建的吗?

4

3 回答 3

5

不,ArrayList 类至少不会跟踪传入的 originalCapacity 值。

如果您担心需要调整内部数组大小的 ArrayList 操作,您可以随时调用ArrayList.ensureCapacity(int).

于 2012-08-30T15:27:44.077 回答
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();
于 2012-08-30T15:31:06.453 回答
0

你不能。即使您将项目添加到集合中,“toArray(...)”生成的数组也只是添加的项目的长度。此外, size() 只会返回添加的元素数。

于 2012-08-30T15:33:03.130 回答