C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でSortedListオブジェクトを検索する方法|ContainsKey・ContainsValueの使い方を解説

C#のSortedListオブジェクトを検索するには、ContainsKeyメソッド(キーの検索)やContainsValueメソッド(値の検索)を使用します。これらのメソッドは、指定したキーや値がコレクション内に存在するかどうかを判定し、結果をbool値(true / false)として返します。

なお、ContainsKeyは内部で二分探索(バイナリサーチ)を行うため計算量はO(log n)ですが、ContainsValueは先頭から順にすべての要素を調べる線形探索のためO(n)の計算量が必要になる点に注意しましょう。

例1:ContainsValueメソッドとContainsKeyメソッドを使った検索

まずは、SortedListに特定の値やキーが含まれているかどうかを確認する基本的な例を見てみましょう。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      SortedList list = new SortedList();
      list.Add("1", "One");
      list.Add("2", "Two");
      list.Add("3", "Three");
      list.Add("4", "Four");
      list.Add("5", "Five");
      list.Add("6", "Six");
      list.Add("7", "Seven");
      list.Add("8", "Eight");
      Console.WriteLine("SortedListのキーと値....");
      foreach(DictionaryEntry k in list)
         Console.WriteLine("キー: {0}, 値: {1}", k.Key, k.Value);
      Console.WriteLine("SortedListに値"Three"は存在するか? " + list.ContainsValue("Three"));
      Console.WriteLine("SortedListオブジェクトは固定サイズか? = " + list.IsFixedSize);
      Console.WriteLine("SortedListオブジェクトにキー"10"は含まれるか? = " + list.ContainsKey("10"));
   }
}

実行結果

SortedListのキーと値....
キー: 1, 値: One
キー: 2, 値: Two
キー: 3, 値: Three
キー: 4, 値: Four
キー: 5, 値: Five
キー: 6, 値: Six
キー: 7, 値: Seven
キー: 8, 値: Eight
SortedListに値"Three"は存在するか? True
SortedListオブジェクトは固定サイズか? = False
SortedListオブジェクトにキー"10"は含まれるか? = False

コードのポイント

  • ContainsValue("Three"):値"Three"がSortedList内に存在するためtrueを返します。
  • IsFixedSize:SortedListは動的に要素を追加できるため、このプロパティはfalseとなります。
  • ContainsKey("10"):キー"10"は登録されていないためfalseを返します。

例2:GetEnumeratorで列挙しながらContainsKeyで検索する

次に、列挙子(IDictionaryEnumerator)を使ってSortedListの全要素を走査し、あわせてContainsKeyメソッドでキーの有無を確認する例を紹介します。

using System;
using System.Collections;

public class Demo {
   public static void Main(String[] args) {
      SortedList sortedList = new SortedList();
      sortedList.Add("A", "1");
      sortedList.Add("B", "2");
      sortedList.Add("C", "3");
      sortedList.Add("D", "4");
      sortedList.Add("E", "5");
      sortedList.Add("F", "6");
      sortedList.Add("G", "7");
      sortedList.Add("H", "8");
      sortedList.Add("I", "9");
      sortedList.Add("J", "10");
      Console.WriteLine("SortedListの要素一覧...");
      foreach(DictionaryEntry d in sortedList) {
         Console.WriteLine("キー = " + d.Key + ", 値 = " + d.Value);
      }
      Console.WriteLine("SortedListのキーと値のペア数 = " + sortedList.Count);
      Console.WriteLine("\n列挙子を使ってSortedListを反復処理...");
      IDictionaryEnumerator demoEnum = sortedList.GetEnumerator();
      while (demoEnum.MoveNext())
         Console.WriteLine("キー = " + demoEnum.Key + ", 値 = " + demoEnum.Value);
      Console.WriteLine("SortedListオブジェクトにキー"M"は含まれるか? = " + sortedList.ContainsKey("M"));
      Console.WriteLine("SortedListオブジェクトにキー"H"は含まれるか? = " + sortedList.ContainsKey("H"));
   }
}

実行結果

SortedListの要素一覧...
キー = A, 値 = 1
キー = B, 値 = 2
キー = C, 値 = 3
キー = D, 値 = 4
キー = E, 値 = 5
キー = F, 値 = 6
キー = G, 値 = 7
キー = H, 値 = 8
キー = I, 値 = 9
キー = J, 値 = 10
SortedListのキーと値のペア数 = 10

列挙子を使ってSortedListを反復処理...
キー = A, 値 = 1
キー = B, 値 = 2
キー = C, 値 = 3
キー = D, 値 = 4
キー = E, 値 = 5
キー = F, 値 = 6
キー = G, 値 = 7
キー = H, 値 = 8
キー = I, 値 = 9
キー = J, 値 = 10
SortedListオブジェクトにキー"M"は含まれるか? = False
SortedListオブジェクトにキー"H"は含まれるか? = True

まとめ

SortedListの検索では、キーの存在確認にはContainsKeyメソッド、値の存在確認にはContainsValueメソッドを使います。どちらも結果をbool値で返すため、if文などでの条件分岐にもそのまま利用できます。また、Countプロパティで要素数を、IsFixedSizeプロパティで固定サイズかどうかを確認できることも覚えておくと便利です。

  1. JavaScriptで変数を使ってオブジェクトのキーを動的に設定する方法

    JavaScriptで変数を使ってオブジェクトのキーを設定する方法 JavaScriptでは、ブラケット記法(角括弧 [])を使用することで、変数の値をオブジェクトのキーとして動的に設定できます。ドット記法では変数をキーとして扱うことができないため、動的なキー設定にはブラケット記法が必須となります。 以下に、ユーザーが入力したプロパティ名とプロパティ値をオブジェクトに追加するサンプルコードを示します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="U

  2. JavaScriptで特定のキーを除外してオブジェクトを分割代入する方法

    JavaScriptでは、レストパラメータ(...)を使った分割代入(デストラクチャリング)を利用することで、オブジェクトから特定のキーだけを取り出し、残りのプロパティをまとめて別の変数に格納できます。この手法は、オブジェクトから不要なプロパティを除外したい場合に非常に便利です。 以下のコードは、オブジェクトから「firstName」キーを除外し、残りのプロパティを「restParam」にまとめて取得する例です。 コード例 <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 />