C#でHashSetに指定された要素が含まれているか確認する方法
C#のHashSet<T>に特定の要素が含まれているかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がHashSet内に存在する場合はtrue、存在しない場合はfalseを返します。
Contains()メソッドの基本構文
public bool Contains (T item);
引数には検索対象の要素を渡します。HashSetはハッシュテーブルを基盤としているため、要素の検索はO(1)の計算量で実行でき、非常に高速です。
例1:数値型のHashSetでContains()を使う
以下は、int型のHashSetに対してContains()メソッドを使用する例です。あわせて、共通要素の有無を判定するOverlaps()メソッドも紹介します。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
HashSet<int> set1 = new HashSet<int>();
set1.Add(25);
set1.Add(50);
set1.Add(75);
set1.Add(100);
set1.Add(125);
set1.Add(150);
Console.WriteLine("HashSet1の要素");
foreach(int val in set1){
Console.WriteLine(val);
}
HashSet<int> set2 = new HashSet<int>();
set2.Add(30);
set2.Add(60);
set2.Add(100);
set2.Add(150);
set2.Add(200);
set2.Add(250);
Console.WriteLine("HashSet2の要素");
foreach(int val in set2){
Console.WriteLine(val);
}
Console.WriteLine("共通の要素は存在するか? " + set1.Overlaps(set2));
Console.WriteLine("HashSet1に60は含まれるか? " + set1.Contains(60));
Console.WriteLine("HashSet2に60は含まれるか? " + set2.Contains(60));
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
HashSet1の要素 25 50 75 100 125 150 HashSet2の要素 30 60 100 150 200 250 共通の要素は存在するか? True HashSet1に60は含まれるか? False HashSet2に60は含まれるか? True
この結果から、set1には60が含まれていないためFalseが返され、set2には60が含まれているためTrueが返されていることがわかります。
例2:文字列型のHashSetでContains()を使う
次に、string型のHashSetに対してContains()メソッドを使用し、if文と組み合わせて条件分岐を行う例を見てみましょう。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
HashSet<string> hashSet = new HashSet<string>();
hashSet.Add("Tim");
hashSet.Add("Jack");
hashSet.Add("Matt");
hashSet.Add("Steve");
hashSet.Add("David");
hashSet.Add("Kane");
hashSet.Add("Gary");
Console.WriteLine("HashSetの要素");
foreach(string val in hashSet){
Console.WriteLine(val);
}
if (hashSet.Contains("Matt"))
Console.WriteLine("要素MattはHashSetに含まれています");
else
Console.WriteLine("要素MattはHashSetに含まれていません");
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
HashSetの要素 Tim Jack Matt Steve David Kane Gary 要素MattはHashSetに含まれています
まとめ
C#のHashSetで特定の要素の存在を確認するには、Contains()メソッドを使うのが最もシンプルで効率的な方法です。戻り値はbool型なので、if文などの条件分岐と組み合わせて柔軟に活用できます。また、2つのHashSet間に共通要素があるかを調べたい場合はOverlaps()メソッドが便利です。
-
【C#】HashSetが指定されたコレクションの真部分集合かどうかを判定する方法
C#の HashSet<T> クラスには、あるコレクションが別のコレクションに対して「真部分集合(proper subset)」であるかどうかを判定するためのメソッド IsProperSubsetOf() が用意されています。真部分集合とは、対象となるコレクションのすべての要素を含み、かつ相手側が自分には含まれない要素を少なくとも1つ持っている状態を指します。つまり、2つの集合が完全に一致する場合は「真部分集合」とは見なされず、False が返されます。この記事では、実際のコード例を使って IsProperSubsetOf() メソッドの使い方と動作を詳しく解説します。サンプルコー
-
C#でHashSetと指定されたコレクションに共通の要素があるか確認する方法
C#において、HashSetと指定されたコレクションとの間に共通の要素が存在するかどうかを確認したい場合は、Overlaps() メソッドを使用します。Overlaps() メソッドは、HashSetと引数で渡されたコレクションの間に共通する要素が1つでも存在すれば true を返し、まったく存在しなければ false を返します。このメソッドは System.Collections.Generic 名前空間に含まれており、引数として IEnumerable<T> 型のコレクションを受け取ります。例1:int型のHashSetの場合まずは、整数値を格納した2つのHashSetで共通