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

C#でハッシュテーブル(Hashtable)から値を検索するプログラム

C#のHashtableコレクションに格納された要素の中から、特定の値を検索する方法を解説します。値の存在確認にはContainsValue()メソッドを使用します。

Hashtableへの要素の追加

まず、Hashtableオブジェクトを作成し、キーと値のペアを追加します。

Hashtable h = new Hashtable();
h.Add(1, "Jack");
h.Add(2, "Henry");
h.Add(3, "Ben");
h.Add(4, "Chris");

ContainsValue()メソッドによる値の検索

Hashtable内に指定した値が存在するかどうかを調べるには、ContainsValue()メソッドを使います。このメソッドは、値が見つかった場合にtrue、見つからなかった場合にfalseを返します。

ここでは、値「Chris」が存在するかどうかを確認します。

h.ContainsValue("Chris");

サンプルコード

以下は、すべてのキーと値の一覧を表示し、その後ContainsValue()メソッドで複数の値の存在を確認する完全な例です。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      Hashtable h = new Hashtable();
      h.Add(1, "Jack");
      h.Add(2, "Henry");
      h.Add(3, "Ben");
      h.Add(4, "Chris");

      Console.WriteLine("Keys and Values list:");
      foreach (var key in h.Keys) {
         Console.WriteLine("Key = {0}, Value = {1}", key, h[key]);
      }

      Console.WriteLine("Value Chris exists? " + h.ContainsValue("Chris"));
      Console.WriteLine("Value Tom exists? " + h.ContainsValue("Tom"));
   }
}

実行結果

Keys and Values list:
Key = 4, Value = Chris
Key = 3, Value = Ben
Key = 2, Value = Henry
Key = 1, Value = Jack
Value Chris exists? True
Value Tom exists? False

実行結果からわかるように、「Chris」はHashtable内に存在するためTrueが返され、存在しない「Tom」に対してはFalseが返されます。なお、foreachループでの表示順序はHashtableの内部構造により保証されない点に注意してください。

  1. Pythonで2^(2^p) mod qを効率的に計算するプログラム

    問題の概要2つの整数 p と q が与えられたとします。このとき、2^(2^p) mod q の値を求める必要があります。出力は整数でなければなりません。例えば、入力が p = 5、q = 6 の場合、出力は 4 になります。解決のアプローチこの問題を解くためには、以下の手順に従います。res := 2^(2^p) mod q を計算するres を返すここで重要なのは、Pythonの組み込み関数 pow() を使う点です。pow(base, exp, mod) のように3つの引数を渡すことで、冪乗を計算した後に剰余を取る処理を高速なモジュラー指数計算として実行してくれます。巨大な数を一度計算し

  2. Pythonで「最大消去値」を求めるプログラム ― スライディングウィンドウ法による解説

    問題の概要 正の整数のみを含む配列 nums が与えられます。この中から要素がすべて一意(重複なし)である部分配列をちょうど1つ選んで「消去」し、その部分配列に含まれる要素の合計値をスコアとして得ます。求めたいのは、この操作で取得できるスコアの最大値です。 例えば、入力が nums = [6,3,2,3,6,3,2,3,6] の場合、出力は 11 になります。これは、最適な部分配列が [6,3,2] または [2,3,6] のいずれかであり、どちらも合計が 11 になるためです。 解き方のアプローチ:スライディングウィンドウ この問題はスライディングウィンドウ(尺取り法)を使うことで効率的に