Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
List<T>.Contains() / IndexOf()
リスト内に指定した要素が含まれるか確認する『Contains()』と、要素が最初に現れるインデックスを返す『IndexOf()』メソッドです。
構文
using System.Collections.Generic; // 指定した要素がリスト内に存在する場合は true を返します。 リスト.Contains(T item) // 指定した要素が最初に現れるインデックスを返します。見つからない場合は -1 を返します。 リスト.IndexOf(T item) // startIndex から検索を開始します。 リスト.IndexOf(T item, int startIndex) // 指定した要素が最後に現れるインデックスを返します。 リスト.LastIndexOf(T item)
メソッド一覧
| メソッド | 概要 |
|---|---|
| Contains(T item) | リストに item が含まれる場合は true を返します。内部で順番に比較するため O(n) の処理です。 |
| IndexOf(T item) | item が最初に現れるインデックスを返します。見つからない場合は -1 を返します。 |
| IndexOf(T item, int startIndex) | startIndex から検索を開始し、最初に一致した要素のインデックスを返します。 |
| LastIndexOf(T item) | item が最後に現れるインデックスを返します。見つからない場合は -1 を返します。 |
サンプルコード
using System;
using System.Collections.Generic;
List<string> 言語 = new List<string> { "C#", "Java", "Python", "Java", "Go" };
// Contains() で存在チェックをします。
Console.WriteLine(言語.Contains("Python")); // True
Console.WriteLine(言語.Contains("Swift")); // False
// Contains() を if 文で使う典型的なパターンです。
if (言語.Contains("C#"))
{
Console.WriteLine("C# はリストに含まれています。");
}
// IndexOf() で最初の出現位置を取得します。
Console.WriteLine(言語.IndexOf("Java")); // 1
Console.WriteLine(言語.IndexOf("Swift")); // -1(存在しないので -1)
// LastIndexOf() で最後の出現位置を取得します。
Console.WriteLine(言語.LastIndexOf("Java")); // 3
// IndexOf() を使って重複を確認します。
int 最初 = 言語.IndexOf("Java");
int 最後 = 言語.LastIndexOf("Java");
if (最初 != 最後)
{
Console.WriteLine("Java は複数回存在します。");
}
概要
『Contains()』と『IndexOf()』はどちらも内部でリストを先頭から順番に走査するため、要素数に比例した処理時間(O(n))がかかります。頻繁な検索が必要な場合は『Dictionary<TKey, TValue>』や HashSet<T> の使用を検討してください。これらはO(1)で検索できます。
リストの並べ替えやループ処理には『List<T>.Sort() / Reverse() / ForEach()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。