【C#】List Remove系の使い方 Listから要素を削除するバリエーション



Remove: 一致する要素を削除

リスト名.Remove()

概要:最初に一致した要素を削除

値と一致するか先頭から探索し、最初に見つかった要素を削除します。

一致する要素すべて削除したい場合は、後述するRemoveAllを使う必要があります。

List<string> list = new List<string>() { "a", "b", "c", "b" };
Console.WriteLine(string.Join(", ", list));

list.Remove("b"); //一致する要素を削除

Console.WriteLine(string.Join(", ", list));
Console.ReadLine(); //コンソールが閉じないよう、入力待ち

 

実行結果

a, b, c, b
a, c, b

 

ちなみにstring.Join()ですが、listの要素を1つの文字列にしています。

foreachで回しても良いのですが、コードが長くなるので使っていません。

 

RemoveAll: 一致する要素をすべて削除

リスト名.RemoveAll(条件)

概要:条件に一致した要素すべて削除

ただし、引数の条件に添字を入れることは出来ないので
ラムダ式を使うか、別の関数を書くことになります。

ラムダ式の方が短く書けるので、こちらを紹介します!

 

List list = new List() { "a", "b", "c", "b" };
Console.WriteLine(string.Join(", ", list));

list.RemoveAll(s => s == "b"); //一致する要素をすべて削除

Console.WriteLine(string.Join(", ", list));
Console.ReadLine(); //コンソールが閉じないよう、入力待ち

 

実行結果

a, b, c, b
a, c

 

RemoveAt: indexで要素を削除

リスト名.RemoveAt(index)

概要:indexの要素を削除

indexには0から始まる添字を指定します。

 

List<string> list = new List<string>() { "a", "b", "c", "b" };
Console.WriteLine(string.Join(", ", list));

list.RemoveAt(1); //indexの要素を削除

Console.WriteLine(string.Join(", ", list));
Console.ReadLine(); //コンソールが閉じないよう、入力待ち

 

実行結果

a, b, c, b
a, c, b

 

RemoveRange: 範囲で要素を削除

リスト名.RemoveRange(始点index, 削除個数)

概要:indexから指定した個数分を削除

 

List<string> list = new List<string>() { "a", "b", "c", "b" };
Console.WriteLine(string.Join(", ", list));

list.RemoveRange(1, 3); //index 1から 3つを削除

Console.WriteLine(string.Join(", ", list));
Console.ReadLine(); //コンソールが閉じないよう、入力待ち

 

実行結果

a, b, c, b
a

 

Clear: 要素の全削除

リスト名.Clear()

概要:リスト内のすべての要素を削除

こちらはRemove系ではありませんが
一括でリストを削除できるので紹介しておきます。

 

List<string> list = new List<string>() { "a", "b", "c", "b" };
Console.WriteLine(string.Join(", ", list));

list.Clear(); //すべての要素を削除

Console.WriteLine("削除後:" + string.Join(", ", list));
Console.ReadLine(); //コンソールが閉じないよう、入力待ち

 

実行結果

a, b, c, b
削除後:

 

最後に

いかがだったでしょうか?

今回はListの削除系のメソッドを紹介しました。

 

新米太郎
新米太郎

お読み頂きありがとうございました!



コメント

タイトルとURLをコピーしました