1. ホーム
  2. java

[解決済み] ArrayList: サイズはどのように増加するのでしょうか?

2023-03-18 14:10:58

質問

Javaに関する基本的な質問です。 ArrayList .

いつ ArrayList が宣言され、デフォルトのコンストラクタで初期化されると、10 個の要素のためのメモリ空間が作成されます。ここで、11 番目の要素を追加すると、どうなるでしょうか。新しいメモリ空間は、20(またはそれ以上)の要素容量で作成されるのでしょうか(これには、最初のメモリ位置から新しい位置に要素をコピーする必要があります)、それとも何か他のものでしょうか?

私は ここで . しかし、私は答えを見つけられませんでした。

知識を共有してください。 ありがとうございます。

どのように解決するのですか?

新しい配列が作成され、古い配列の内容がコピーされます。APIレベルではこれだけです。引用元 ドキュメント (を引用しています(私の強調)。

それぞれの ArrayList のインスタンスには容量があります。容量は、リストの要素を格納するために使用される配列のサイズです。これは、常にリストサイズと同じ大きさです。要素がArrayListに追加されると、その容量は自動的に大きくなります。 成長ポリシーの詳細は、要素を追加することが一定の償却時間コストを持っているという事実以上に指定されていません。

の具体的な実装で実際にどうなるかという点では、このように ArrayList の特定の実装 (例えば Sun のもの) で実際にどのように起こるかについてですが、彼らの場合、ソースで血なまぐさい詳細を見ることができます。しかしもちろん、特定の実装の詳細に依存することは通常良いアイデアではありません...。