C#のリストに要素を含むか検索する方法について書いています。
リストに要素を含むか確認するときには、下記のメソッドをリストから呼び出すと良いです。
・IndexOfメソッド
・LastIndexOfメソッド
載せているコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。
Containsメソッドを使う
リストからContainsメソッドを呼び出すことで、要素を含んでいるか確認できます。
例えば、下記のように使うことができます。
List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};
bool result = fruits.Contains("orange");
if (result) {
Console.WriteLine("orangeを含みます!");
}
最初にfruits
変数に、4つの文字列でリストを作りました。
次の処理で、リストからContainsメソッドを呼び出して含まれているか確認しています。
Containsメソッドに引数として渡しているのは、含んでいるか確認したい値です。
含んでいるときにはTrue
が返ってきて、含んでいないときはFalse
が返ってきます。
今回は「orange
」が含まれているか確認して、含まれているのでTrue
が返ってきます。
result
変数で結果を受け取って、if文で含んでいるか確認しています。
含まれているので、「orangeを含みます!
」を出力して処理が終わります。
IndexOfメソッドを使う
リストからIndexOfメソッドを呼び出すことでも、要素を含んでいるか確認することができます。
IndexOfメソッドは要素の要素番号を返してくれます。
例えば、下記のように使います。
List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};
int index = fruits.IndexOf("banana");
if (index > 0) {
Console.WriteLine("bananaを含みます!");
}
最初にfruits
変数に、4つの文字列でリストを作りました。
次の処理で、リストからIndexOfメソッドを呼び出して含まれているか確認しています。
IndexOfメソッドに引数として渡しているのは、含んでいるか確認したい値です。
含んでいるときには要素番号が返ってきて、含んでないときには数値の「-1
」が返ってきます。
そのため、「0」以上だったときには、含んでいることになります。
今回の「banana
」は含まれているので、要素番号の「3
」が返ってきます。
index
変数で結果を受け取って、if文で含んでいるか確認しています。
プログラムを実行すると、「bananaを含みます!
」を出力して、処理が終了します。
複数の重複する値があったときは?
リストに複数の要素があったときには、IndexOfメソッドを使うと、一番最初に見つかった要素番号を返してくれます。
List<string> fruits = new List<string>() {"apple", "banana", "grape", "banana", "orange", "banana"};
int index = fruits.IndexOf("banana");
if (index > 0) {
Console.WriteLine("bananaを含みます!");
}
fruits
変数に、6つの文字列でリストを作りました。
「banana
」の要素が3つ重複しています。
このときには、一番最初に見つかった位置の「1
」が返ってきます。
LastIndexOfメソッドを使う
リストからLastIndexOfメソッドを使うことでも、要素を含んでいるか確認することができます。
LastIndexOfメソッドも、要素が含まれているときには要素番号が返ってきます。
例えば、下記のように使います。
List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};
int index = fruits.LastIndexOf("grape");
if (index > 0) {
Console.WriteLine("grapeを含みます!");
}
最初にfruits
変数に、4つの文字列でリストを作りました。
次の処理で、リストからLastIndexOfメソッドを呼び出して含まれているか確認しています。
LastIndexOfメソッドに引数として渡しているのは、含んでいるか確認したい値です。
IndexOfメソッドと同じように、含んでいるときには要素番号が返ってきて、含んでないときには数値の「-1
」が返ってきます。
今回の「grape
」は含まれているので、要素番号の「2
」が返ってきます。
プログラムを実行すると、「grapeを含みます!
」を出力して、処理が終了します。
複数の重複する値があったときは?
リストに複数の要素があったときには、LastIndexOfメソッドを使うと、一番最後に見つかった要素番号を返してくれます。
List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana", "apple", "grape"};
int index = fruits.LastIndexOf("grape");
if (index > 0) {
Console.WriteLine("grapeを含みます!");
}
fruits
変数に、6つの文字列でリストを作りました。
「grape
」の要素が、2番目と5番目で重複しています。
このときには、一番最後に見つかった位置の「5
」が返ってきます。
IndexOfメソッドとLastIndexOfメソッドの違い
上記までの内容を確認してもらうと、気づいたかもしれませんが、重複する要素があったときに返ってくる要素番号が変わります。
IndexOfメソッドのときには、先頭から探して一番最初に見つかった要素の要素番号が返ってきます。
LastIndexOfメソッドのときには、一番最後の要素番号が返ってきます。
どちらのメソッドも、先頭の0番目から数えた要素番号になります。
リストに要素を含むか検索する方法まとめ
今回はC#のリストに要素を含むか検索して、確認する方法について書きました。
記事の内容をまとめると、下記のようになります。
メソッド | 説明 | 例 |
---|---|---|
Contains | 含むか確認したい値を渡す。含むときにはTrue 、含まないときにはFalse が返ってくる。 |
fruits.Contains(“orange”) |
IndexOf | 含むか確認したい値を渡す。先頭から数えて、一番最初の要素番号が返ってくる。 存在しないときには「-1」が返ってくる。 |
fruits.IndexOf(“banana”) |
LastIndexOf | 含むか確認したい値を渡す。先頭から数えて、一番最後の要素番号が返ってくる。 存在しないときには「-1」が返ってくる。 |
fruits.LastIndexOf(“grape”) |
コメント