(C#) 配列とコレクションの違い

c#-array-collection-difference

 

本記事では、C#だけでなく、javaとかでも使うことができる、
配列とコレクションの違いを解説していく。

 

(結論)配列よりコレクションの方が、柔軟に要素を扱える

配列とコレクションの違いが何かと言う結論から述べると、
配列よりコレクションの方が、柔軟に要素を扱えるという違いがある。

配列よりもコレクションの違いを説明した画像

 

配列とコレクション、どちらも要素の集合体には変わりはないが、
配列の場合は、最初に配列の要素数を決めたら、要素数をその後は変更できないのに対して、
コレクションの方が、要素を操作できる仕組み(メソッドなど)が多い。

 

この時点ではどちらコレクション優位の感じに聞こえるだろうが、どちらもメリットデメリットが存在するので、まずはポイントとして、コレクションの方が配列よりも十何二要素を扱えると言う点を抑えておこう。

 

配列とコレクションの違い
  • 配列よりコレクションの方が、柔軟に要素を扱える
  • 配列の場合は、最初に配列の要素数を決めたら、要素数をその後は変更できないのに対して、
    コレクションの方が、要素を操作できる仕組み(メソッドなど)が多い

 

 

コレクションの使用例

では配列とコレクションの違いを理解するために、実例を元に解説をしていく。

下記は、List型のコレクションの使用例だ。見てみると、

  • 後から要素を追加したり(1)、
  • 任意のインデックス番号の位置に要素を挿入したり(2)

しているのが理解できる。

static void Main(string[] args)
{
    // List型の変数を作成
    List<string> names = new List<string>();
    
    // namesに要素を追加する     (1)
    names.Add('田中');
    names.Add('佐藤');
    names.Add('林');

    // namesのインデックス1番目に要素を追加する     (2)
    names.Insert(1, '村田');
    
    // 要素を全て表示する
    for (int i=0; i<names.Count; i++)
    {
         Console.WriteLine(names[i]);
    } 
}

 

#実行結果
田中
村田
佐藤
林

 

上記のように、コレクションインスタンス.メソッド名という形で、
様々な型のコレクションから、柔軟に自身の要素を操作することが可能となる。

上記は配列ではできないことなので、コレクション特有のメリットと言えるだろう。

 

上記を踏まえて、コレクションをいつ使うか




配列とコレクションの違いが理解できたところで、
では一体コレクションはいつ使用するべきなのだろうか。

結論から言うと、コレクションは、要素数が定まらない場合に使用する。

また、要素数が定まらない場合に使用する。機会が多い。

 

コレクションをいつ使うか
  • 要素数が定まらない場合に使用する。
  • 要素数が定まらない場合に使用する。

 

 

コレクションのメソッド(一部)

では最後に、コレクションのメソッドを一覧で紹介し、
コレクションではこんなことができるんだよと言うのを大体で良いので理解していただけたらと思う。

 

Add(要素)

要素を追加する

 

Insert(挿入位置インデックス, 要素)

挿入位置インデックスに要素を追加する

 

RemoveAt(インデックス)

インデックスの要素を削除する

 

IndexOf(要素の値)

要素の値を元に、インデックスを検索する

 

Contains(要素の値)

要素の値を元に、要素の有無を調べる

 

Sort()

Listを昇順に並べ替える

 

Reverse()

Listを逆順に並べ替える

 

 

関連記事

c#-array-collection-difference
csharp-ref-out-differense

 

https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/collections

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/lambda-expressions

 

 

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。