どこかでjava.util.List
、以下のように定義されているのを見ました。
List<String> myList = new ArrayList<String>(0);
括弧内の整数の機能とその使用方法を説明できる人はいますか? ありがとう。
6 に答える
パラメータは、の開始容量を決定しますArrayList
。
ArrayList
は、一定数のオブジェクトを保持するために内部的にメモリを割り当てます。さらに要素を追加すると、より多くのメモリを割り当て、すべてのデータを新しい場所にコピーする必要があり、これには時間がかかります。ArrayList
そのため、 Java を支援するために配置するオブジェクトの数を推測して指定できます。おそらく
の開始サイズは、プログラマーががめったに使用されないと考えていることを示しているため、最初からメモリを割り当てる必要はありません。0
ArrayList
[編集]明確にするために、@LuiggiMendoza と @emory がディスカッションで言っているように、初期容量として
使用するのが理にかなっているシナリオを考えるのは非常に困難です。0
ほとんどの場合、デフォルトのコンストラクターは問題なく機能します。
ArrayList の初期容量を定義します。
の初期容量を定義することですArrayList
。
引数を持たないコンストラクターも存在するため、必要に応じてサイズ パラメーターを渡す義務はありません。
追加の要素を追加するときはいつでも、リストのサイズが追加を許可しない場合、List
クラスはより大きなサイズの別List
のを作成Heap
し、 old のコンテンツを追加の要素とともにそれにコピーし、 oldarray
を削除しarray
ます。
最初のインスタンス化の容量は、新しい を作成し、古いブロックを削除し、実行時に内容をコピーすることにより、追加のメモリ ブロックを割り当てないようにするsize
のList
に役立つ正確な を作成するためにあります。これにより、パフォーマンスが向上します。Lists
リストの容量を指定します
配列リストのサイズとその容量を混同しないでください:
- サイズはリスト内の要素の数です。
- 容量は、内部構造を再割り当てせずにリストが潜在的に収容できる要素の数です。
を呼び出すときは、リストのサイズではなくnew ArrayList<String>(0)
、リストの初期容量を設定しています。言い換えれば、この方法で構築された場合、配列リストはその人生を空から始めます。
として使用する場合
List<String> strList = new ArrayList<String>(5);
指定された初期容量で空のリストを構築します。
何も指定しない場合のデフォルト。
List<String> strList = new ArrayList<String>;
初期容量が 10 の空のリストが作成されます。
ここを読む
これを ArrayList のサイズと誤解しないでください。