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 に答える