1

クラスの ArrayList をいつインスタンス化するのか疑問に思っていました。初期サイズを指定して、#1 ではなく #2 のように宣言すると、どういうわけか速くなりますか? または、コンストラクターに追加する列の数が正確にわかっている場合にのみ、コンストラクターに初期サイズを与える必要がありますか?

  1. List<Column> columns = new ArrayList<Column>();
  2. List<Column> columns = new ArrayList<Column>(10);
4

4 に答える 4

3

デフォルトでは10参照を割り当てるため、違いはありません

ソースから目撃する

public  ArrayList() {
     this(10);
 }

その使用法は、おおよその数を予測することです。たとえば、最大で約 25 個の要素が必要であり、それも同様に増加すると思われる場合は、initialCapacity を定義して、25コストのかかる操作である配列のコピーを回避します。

于 2013-07-29T18:50:24.967 に答える
0

ArrayList に入れるメンバーの数が正確にわかっている場合は、初期容量 (2 番目のケース) を指定することで、リストが大きくなったときに基になる配列表現を再作成してコピーすることを回避できます。

あなたの例では10個のメンバーを使用していますが、これはたまたまArrayListの現在の実装のデフォルトサイズです。ただし、より一般的なケースについて質問していると思います。

于 2013-07-29T18:55:49.187 に答える