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() は、追加された要素の数のみを返します。