C#のListまとめ(追加 / 削除 / 取得 / 値のチェック)
C#でListを使うことが増えてきたので、Listについてまとめてみました💡
Listの作成から追加・削除・ソート・存在チェックについて書いています。
動作確認はVisual Stadio for Macのコンソールアプリでやってみました。
Listを作成する
名前空間はSystem.Collections.Genericです!
使うときはここをusingします。
(using System.Collections.Generic;
を文頭に書いておきます)
ListはList<T(型)>で宣言できます。
下記のように自作したクラスのインスタンスをリスト化することもできます。
public class Person
{
string Name { set; get; }
int Age { set; get; }
DateTime Birthday { set; get; }
}
public static void Test()
{
// --- リストの宣言 ---
// 数値のリスト
List<int> numbers = new List<int>();
// 文字列のリスト
List<string> userNames = new List<string>();
// 自作クラスのリスト
List<Person> peoples = new List<Person>();
}
Listにアイテムを追加する
Addメソッドで追加
ListのAddメソッドを使って、アイテムを入れるとリストの最後に追加されていきます。
List<string> fruits = new List<string>();
fruits.Add("apple");
fruits.Add("banana");
fruits.Add("lemon");
AddRangeメソッドで追加
アイテムを複数追加するときは、AddRangeメソッドを使います。
リストの最後に追加されます。
// apple, banana, lemonが入っていてAddRangeで入れたとき
fruits.AddRange(new List<string>() { "grape", "orange" });
// 結果:apple, banana, lemon, grape, orange
Listのアイテムを取り出す
Listの値はforeach文を使ってループさせて処理したり、
リストの番号を指定して取り出しましょう。
リストは0番目から数えます!
カギ括弧[]でアイテムの入っている配列番号を指定します。
List<string> fruits = new List<string>();
fruits.Add("apple");
fruits.Add("banana");
System.Console.WriteLine(fruits[0]);
// 結果:apple
// ループで全アイテムを取り出す
foreach (var fruit in fruits)
{
Console.WriteLine(fruit);
}
// 結果
// apple
// banana
Listのアイテムを削除する
RemoveAtでアイテムを削除する
RemoveAtでアイテムの番号を引数で指定して削除します。
連続で使う場合はアイテムの配列位置がずれていくので注意が必要です。
下記の例だと、"apple", "banana", "lemon", "grape", "orange"
が入っていて
0番目、2番目をRemoveAtで消しているので "banana", "grape", "orange"
となりそうです。
ですが、アイテムの位置がずれるので”apple”を消した時点で
“banana”が0番目になって、2番目が”grape”になるので
結果が "banana", "lemon","orange"
となります!
List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "apple", "banana", "lemon", "grape", "orange" });
fruits.RemoveAt(0);
fruits.RemoveAt(2);
// 結果
// banana
// lemon
// orange
RemoveRangeで範囲を指定してアイテム削除
RemoveRangeで指定範囲のアイテムが削除できます。
指定の仕方は、
・1番目の引数:削除開始位置
・2番目の引数:削除する個数
になります。
下記のように"grape", "orange", "peach", "apple"
が入っている場合は
0番目から2個消しているので、"peach", "apple"
が残ります。
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
fruits.RemoveRange(0, 2);
RemoveAllで条件にあったアイテムを削除する
RemoveAllは引数にチェックするメソッドを記述します。
条件に一致したアイテムを全て削除します。
public static void Test()
{
List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
fruits.RemoveAll(FruitsCheck);
}
private static bool FruitsCheck(string e)
{
return e.Contains("ra");
}
上記のようにFruitsCheck
を指定した場合、
Containsでアイテムに”ra”を含むものを探すようにしているので
"grape","orange"
が削除されて
結果は "peach", "apple"
となります。
Clearで全てのアイテムを削除する
Clearメソッドを呼び出すと、全てのアイテムが消えます!
List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
fruits.Clear();
Listに指定のアイテムがあるかチェックする
Containsで探す
Containsメソッドで値があるかチェックできます。
値が存在する場合はtrue、存在しない場合はfalseになります。
List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
if (fruits.Contains("orange"))
{
Console.WriteLine("orangeがある");
}
// 結果
// orangeがある
コメント