C#

[C#] Listに要素を追加/挿入するには?

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回は数あるコレクションの中でも、
最もよく使うといっても過言ではない"System.Collections.Generic.List<T>"について、
List<T>オブジェクトに要素を追加する方法を整理し、解説していきます。

まとめて要素を追加したり、任意の場所に挿入したり、実は多くのバリエーションがあるので今回はその[追加/挿入]について見ていきましょう。

C# Listとは?

まずはこのC#におけるList<T>について、簡単に説明します。

IT博士
IT博士

C#には配列と似ている機能のひとつに、「List」と呼ばれる概念があります。このListは配列とは違い、動的に要素の追加や削除ができますよ。

なるほど。動的に追加や削除ができるということは、いろいろなことに使えそうですね!

従来まで使ってきた通常の配列では、使用前にサイズを指定する必要があり、アプリ実行中の状況に応じて必要なサイズが増えたり、減ったりする場合には、 どの程度のサイズを指定しておいたらいいのか困ってしまうことがあります。

あらかじめ指定したサイズが少ないと足りなってしまい、どうすることもできなくなります。
かといって、大きなサイズを指定すると余ってしまった分のメモリが無駄で、場合によってはそのせいでパフォーマンスが低下することもあるんです。
IT博士
IT博士

その点では、動的配列である List を使うことで、アプリ実行中でも必要に応じて配列のサイズを増減させることができるので便利なんです。

でも扱い方とか便利でも、むずかしそうですね。。。

IT博士
IT博士

そうでもないですよ♪
i 番目の要素にアクセスするには [i] で参照できますし、使い方も通常の配列とほとんど同じで、最低限のことだけ覚えれば便利な配列として使えます!

C# Listに要素を追加

なんとなくListについて便利だな。と内容が分かってきたところで早速本題に入ります!

Listへの要素の追加方法は、大きく分けて3通りあります。

  1. 初期化時に要素を与える方法
  2. Addメソッド/AddRangeメソッドを使って末尾に追加する方法
  3. Insertメソッド/InsertRangeメソッドを使って任意の場所に挿入する方法

この3つですね。順番に説明していきますね。

初期化時に要素を与える方法

では、まず最初に初期化の際に要素を与える方法についてみていきましょう。
この方法については、初期化時に与える要素をコレクションを渡してやる方法とそのまま初期値を書く方法の2つをご紹介します。

// コンストラクタに既存のコレクションを与える方法
IEnumerable<string> anotherCollection = ……省略……;
var list1 = new list<string>(anotherCollection);

// 初期化と一緒に初期値を書く方法
var list2 = new List<string>{ "value1", "value2", "value3"};

今回は、staring型(文字列型)を格納しましたが、ここは任意の型にしてくださいね。
このListへの要素の追加方法はシンプルで、配列の時と似ているので問題ないとおもいます。

Add / AddRangeメソッドを使って末尾に追加する方法

ここからが配列ではなく、Listを使うことによるメリットです。
Listオブジェクトに要素を末尾に追加していきます。

// Add/AddRangeメソッドを使う方法
var list = new List<string>();
// 末尾に要素を追加
list.Add("value1");

// 末尾に複数の要素を追加
IEnumerable<string> anotherCollection =……省略……;
list.AddRange(anotherCollection);

こちらも実際にやってみると、とてもシンプルで簡単なことがわかると思います。
Addメソッドは引数で追加する要素を指定するだけで、AddRangeメソッドも複数の要素の入ったコレクション(anotherCollecyion)を引数で指定するだけです。

IT博士
IT博士

AddRangeメソッドを使うことで、Listを要素に持つListを保持することなんかもできますよ♪

Insert / InsertRangeメソッドを使って任意の場所に挿入する方法

最後に、すでにあるListの好きな場所に要素を挿入する方法を見ていきましょう!

// Insert/InsertRangeメソッドを使う方法
var list = new List<string>();

// 先頭に"value1"を挿入
list.Insert(0, "value1");

// 末尾に"value2"を追加
int count = list.Count; // Listの要素数を取得
list.Insert(count, "value2");

// 3番目から複数要素(anotherCollection)を挿入
IEnumerable<string> anotherCollection =……省略……;
list.InsertRange(2, anotherCollection);

このようにInsertメソッドを使うことで、第一引数に挿入する要素目を、第二引数に挿入する値をしていするだけです。

InsertRangeメソッドでは、第一引数に挿入する要素目を、第二引数に挿入するコレクション(anotherCollectin)を指定しています。

まとめ

今回は、"System.Collections.Generic.List<T>"について、List<T>オブジェクトに要素を追加する方法をみていきました。

おさらいすると、追加や挿入する方法は3つ。

  1. 初期化時に要素を与える方法
  2. Addメソッド/AddRangeメソッドを使って末尾に追加する方法
  3. Insertメソッド/InsertRangeメソッドを使って任意の場所に挿入する方法

これは押さえておきましょう!

【結論】未経験でプログラミングの独学はぜんぜん可能

List<T>は使えるととても便利です。今回は追加/挿入しかしていませんが、ほかにもできることはたくさんあるので、またの機会に紹介していきますね!

Listコレクションの要素を削除する方法をまとめた記事があるので良かったら参考にしてみてください。

https://itthestudy.com-list-delete/


Copyright© FUNA BLOG , 2020 All Rights Reserved.