C#のハッシュテーブルでキーが存在するか確認する方法
C#では、Hashtableクラスを使うことで、キーと値のペアを効率的に管理できます。この記事では、Hashtableに要素を追加した後、特定のキーが存在するかどうかをContains()メソッドで確認する方法を解説します。
Hashtableへの要素の追加
まずは、Hashtableコレクションを作成し、要素(キーと値のペア)を追加します。
Hashtable h = new Hashtable(); h.Add(1, "Jack"); h.Add(2, "Henry"); h.Add(3, "Ben"); h.Add(4, "Chris");
Add()メソッドの第一引数がキー、第二引数が値になります。ここでは整数型のキーに対して文字列の値を設定しています。
Contains()メソッドでキーを検索する
特定のキーがHashtable内に存在するかどうかを調べるには、Contains()メソッドを使用します。例えば、キー「3」が存在するか確認する場合は次のように記述します。
h.Contains(3);
キーが存在すればtrue、存在しなければfalseが返されます。なお、ContainsKey()メソッドも同じ動作をするため、どちらを使っても構いません。
サンプルコード全体
以下は、Hashtableに要素を追加し、すべてのキーと値を表示した後、キー「3」の存在を確認する完全なサンプルプログラムです。
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("Key 3 exists? " + h.Contains(3));
}
}
実行結果
Keys and Values list: Key = 4, Value = Chris Key = 3, Value = Ben Key = 2, Value = Henry Key = 1, Value = Jack Key 3 exists? True
ポイント解説
- 要素の順序について: Hashtableは格納順序を保証しないため、出力時のキーの並び順は必ずしも追加順と一致しません。上記の出力例でも、キーが4から1の順で表示されています。
- foreachループでの走査:
h.Keysで全キーを取得し、各キーに対応する値をh[key]で参照できます。 - Contains()とContainsKey(): どちらもキーの存在確認に使えますが、値の存在確認には
ContainsValue()を使用します。
このように、Contains()メソッドを使えば、Hashtable内のキーの有無を簡単に判定できます。大量のデータから高速にキーを検索したい場合に、Hashtableは非常に有用なコレクションです。
-
Windows 11のプロダクトキーを見つける方法を徹底解説
Windows 11のプロダクトキーを探しているものの、どこに記載されているのか分からず困っていませんか?保管用として控えておきたいだけの場合でも、その場所がすぐには見つからないことがあります。Windowsのバージョンアップから長い時間が経っていると、プロダクトキーの仕組みが変化していることに気づいていないかもしれません。幸い、Windows 11のプロダクトキーを見つけるのは簡単で、短時間で確認できます。そもそもプロダクトキーが存在しない場合もあるまず知っておくべきなのは、プロダクトキーがそもそも存在しないケースがあるという点です。Windows 11(Windows 10も同様)の一部の
-
C#でクライアントのIPアドレスを取得する方法を解説
C#でクライアント(ローカルマシン)のIPアドレスを取得するには、System.Net名前空間に含まれるDNS関連のクラスを利用します。基本的な流れは、「まずホスト名を取得し、そのホスト名からIPアドレスの一覧を取り出す」という2段階です。手順1:Dns.GetHostName()でホスト名を取得する最初に、Dns.GetHostName()メソッドを使って、実行中のマシンのホスト名を取得します。String hostName = string.Empty; hostName = Dns.GetHostName(); Console.WriteLine(Hostname: + hostNam