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

C#のStringDictionaryに特定の値が含まれているかどうかを確認する方法

C#のStringDictionaryに特定の値(Value)が含まれているかどうかを確認するには、ContainsValue()メソッドを使用します。このメソッドは、指定した値がディクショナリ内に存在する場合は true、存在しない場合は false を返します。


また、特定のキー(Key)の存在を確認したい場合は ContainsKey() メソッドを使います。以下のサンプルコードでは、これらのメソッドの基本的な使い方を紹介します。

例1:ContainsValue()で値の存在を確認する

まずは、複数のキーと値を持つStringDictionaryを作成し、ContainsKey()とContainsValue()を使って存在確認を行う例を見てみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
   public static void Main(){
      StringDictionary strDict1 = new StringDictionary();
      strDict1.Add("A", "John");
      strDict1.Add("B", "Andy");
      strDict1.Add("C", "Tim");
      strDict1.Add("D", "Ryan");
      strDict1.Add("E", "Kevin");
      strDict1.Add("F", "Katie");
      strDict1.Add("G", "Brad");
      Console.WriteLine("StringDictionary1 elements...");
      foreach(DictionaryEntry d in strDict1){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine("Does StringDictionary1 has key G? "+strDict1.ContainsKey("G"));
      Console.WriteLine("Does StringDictionary1 has value Ryan? "+strDict1.ContainsValue("Ryan"));
      StringDictionary strDict2 = new StringDictionary();
      strDict2.Add("A", "John");
      strDict2.Add("B", "Andy");
      strDict2.Add("C", "Tim");
      strDict2.Add("D", "Ryan");
      strDict2.Add("E", "Kevin");
      strDict2.Add("F", "Katie");
      strDict2.Add("G", "Brad");
      Console.WriteLine("\nStringDictionary2 elements...");
      foreach(DictionaryEntry d in strDict2){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = "+strDict2.Equals(strDict1));
      Console.WriteLine("Does StringDictionary2 has key B? "+strDict2.ContainsKey("B"));
   }
}

出力

上記のコードを実行すると、次のような出力が得られます。

StringDictionary1 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Does StringDictionary1 has key G? True Does StringDictionary1 has value Ryan? True
StringDictionary2 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Is Dictionary2 equal to Dictionary1? = False
Does StringDictionary2 has key B? True

出力結果の解説

この例では、キー「G」および値「Ryan」がどちらもStringDictionary1に存在するため、ContainsKey()とContainsValue()の両方が True を返しています。なお、StringDictionaryはキーを大文字・小文字を区別しない形式で内部的に保持するため、出力ではキーが小文字(a, b, c…)で表示される点に注目してください。

例2:キーや値が存在しない場合の動作

次に、検索対象のキーや値がディクショナリに存在しない場合の動作を確認してみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
   public static void Main(){
      StringDictionary strDict1 = new StringDictionary();
      strDict1.Add("U", "Electronics");
      strDict1.Add("V", "Toys");
      strDict1.Add("W", "Books");
      strDict1.Add("X", "Accessories");
      Console.WriteLine("StringDictionary1 elements...");
      foreach(DictionaryEntry d in strDict1){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine("Does StringDictionary1 has key G? "+strDict1.ContainsKey("G"));
      Console.WriteLine("Does StringDictionary1 has value Footwear? "+strDict1.ContainsValue("Footwear"));
      StringDictionary strDict2 = new StringDictionary();
      strDict2.Add("A", "John");
      strDict2.Add("B", "Andy");
      strDict2.Add("C", "Tim");
      strDict2.Add("D", "Ryan");
      strDict2.Add("E", "Kevin");
      strDict2.Add("F", "Katie");
      strDict2.Add("G", "Brad");
      Console.WriteLine("\nStringDictionary2 elements...");
      foreach(DictionaryEntry d in strDict2){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = "+strDict2.Equals(strDict1));
      Console.WriteLine("Does StringDictionary2 has key B? "+strDict2.ContainsKey("B"));
   }
}

出力

このコードを実行すると、以下の出力が生成されます。

StringDictionary1 elements...
x Accessories
u Electronics
v Toys
w Books
Does StringDictionary1 has key G? False Does StringDictionary1 has value Footwear? False
StringDictionary2 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Is Dictionary2 equal to Dictionary1? = False
Does StringDictionary2 has key B? True

まとめ

例2では、キー「G」も値「Footwear」もStringDictionary1に存在しないため、両方のメソッドが False を返しています。このように、ContainsValue() は値の存在確認、ContainsKey() はキーの存在確認にそれぞれ使用でき、戻り値のbool値によって条件分岐などの処理に簡単に組み込むことができます。

  1. C#でHashSetに指定された要素が含まれているか確認する方法

    C#のHashSet<T>に特定の要素が含まれているかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がHashSet内に存在する場合はtrue、存在しない場合はfalseを返します。Contains()メソッドの基本構文public bool Contains (T item);引数には検索対象の要素を渡します。HashSetはハッシュテーブルを基盤としているため、要素の検索はO(1)の計算量で実行でき、非常に高速です。例1:数値型のHashSetでContains()を使う以下は、int型のHashSetに対してContains()メ

  2. 【Java入門】配列に指定した値が含まれているかを判定する方法

    この記事では、Javaで配列の中に特定の値が含まれているかどうかを確認する方法を解説します。基本的な考え方は、配列の各要素を順番に走査(イテレート)し、検索したい値と比較するというものです。処理の流れ(アルゴリズム)処理を開始する整数型の変数(my_input、i、array_size)とboolean型の変数(my_check)、そして整数型配列(my_array)を宣言するユーザーから値を入力してもらう、またはあらかじめ値を定義しておくforループで配列の要素を順に取り出し、検索対象の値と比較する一致する要素が見つかれば「含まれている」、見つからなければ「含まれていない」と判定する結果を表