🔖

【C#データ構造】配列とリストの違いとは?使い分けを解説!

2024/05/15に公開

はじめに

プログラミングを学び始めると、必ず出会う「配列」と「リスト」。私は今であっています。この二つの違いを理解しておくことは、コードを書く上で非常に重要です。この記事では、配列とリストの違いとそれぞれの使い分け方を初心者にも分かりやすく解説します。どちらを使うべきか悩んだときの参考にしてください。

配列(Array)

配列は、最も基本的なデータ構造の一つです。要素を連続してメモリ上に配置します。固定サイズで、要素へのアクセスが速いのが特徴です。

  • 得意なこと
    • 列の何番目の要素であるかを指定するとO(1)の計算時間で即座にその要素を取り出すことができる。
  • 苦手なこと
    • 途中の要素へ挿入や削除を行う場合、後ろ全てをずらす必要がある。
    • 固定長なのでサイズの変更ができない。

リスト(List)

リストは、動的に要素を追加・削除できるデータ構造です。配列とは異なり、要素数を事前に決める必要がありません。それぞれの要素がノードとして扱われ、それぞれが次の要素へのポインタを持っています。

  • 得意なこと
    • 要素の挿入・削除がポインタを付け替えるだけで良いので速い。O(1)で操作可能。
  • 苦手なこと
    • 任意の位置へのアクセスが前から順に要素をたどらなければならないため遅い。O(n)の計算時間が必要。

配列とリストの違い

メモリ配置とアクセス速度

配列は連続したメモリ領域を確保するため、要素へのアクセスが非常に高速です。一方、リストは要素が分散して配置されるため、アクセス速度は配列ほど速くありません。ただし、要素の追加や削除はリストの方が効率的です。

サイズの可変性

配列は固定サイズで作成されるため、要素数が事前に分かっている場合に適しています。リストは動的にサイズを変更できるため、要素数が変動する場合に便利です。

具体的な使い分け

  • 固定サイズで高速アクセスが必要な場合:配列を選びましょう。特に、要素数が事前に分かっており、頻繁にアクセスする場合に最適です。
  • 要素の追加・削除が頻繁な場合:リストが適しています。特に、データのサイズが不定で変動する場合や、頻繁に要素を追加・削除する場合に便利です。

実際のコード例(C#)

配列の例

int[] array = new int[5];
array[0] = 1;//要素を指定する必要がある。
array[1] = 2;

リストの例

List<Int> list = new List<>();
list.Add(1);//簡単に追加できる
list.Add(2);

まとめ

配列とリスト、それぞれに得意・不得意があります。用途に応じて使い分けることで、効率的なプログラミングが可能となります。どちらを選ぶべきか悩んだときは、本記事を参考に、自分のニーズに最適なデータ構造を選んでみてください!ありがとうございました。

参考書籍

データ構造とアルゴリズム[第2版] (新・情報/通信システム工学)
https://amzn.to/3YtOnpz

Discussion