回答編集履歴

1

追記

2019/06/20 10:47

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -1 +1,33 @@
1
1
  ありません。配列に要素を加えるときは新しい配列を作って既存の要素をコピーし、そこにくわえることになります。それを内部で行っているのが List です。
2
+
3
+
4
+
5
+ # 追記
6
+
7
+
8
+
9
+ 不正確でした。
10
+
11
+
12
+
13
+ 配列は連続したメモリを必要とするので、自由に動的に大きくすることはできません(小さくすることは可能です)。
14
+
15
+
16
+
17
+ しかし、新しくメモリを確保してそこに既存の配列の内容をコピーして、それを使用することで、事実上大きくすることはできます。
18
+
19
+
20
+
21
+ ただし、それはいちいちコピーしているので、元のサイズが大きくなればなるほどパフォーマンスが悪くなります。
22
+
23
+
24
+
25
+ List は内部で配列をデータの保持領域として使っています。そして領域が足りなくなれば新しく確保してコピーしています。
26
+
27
+
28
+
29
+ つまり List は領域が足りなくなった時にユーザーが割り当てなくても自動的に拡張する仕組みを備えた配列のようなものと呼ぶことができます。
30
+
31
+
32
+
33
+ ほとんどの場合、List を使うことでユーザーの負荷が減り、効率良くメモリを使うことができるので、動的にデータが増える場合は配列ではなく List を使ってください。