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

C#のHashSetから指定した要素を削除する方法

C#のHashSet<T>から特定の要素を削除するには、Remove()メソッドを使用します。このメソッドは、引数に指定した要素がセット内に存在すれば削除し、存在しない場合は何も行わずfalseを返します。以下に具体的なコード例を示します。

例1:文字列のHashSetから要素を削除する

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<string> set1 = new HashSet<string>();
      set1.Add("AB");
      set1.Add("CD");
      set1.Add("EF");
      set1.Add("AB");
      set1.Add("IJ");
      set1.Add("KL");
      set1.Add("EF");
      set1.Add("OP");
      Console.WriteLine("HashSet1の要素");
      foreach(string val in set1){
         Console.WriteLine(val);
      }
      HashSet<string> set2 = new HashSet<string>();
      set2.Add("EF");
      set2.Add("KL");
      Console.WriteLine("HashSet2の要素");
      foreach(string val in set2){
         Console.WriteLine(val);
      }
      Console.WriteLine("HashSet2の要素数 = " + set2.Count);
      // 「KL」を削除
      set2.Remove("KL");
      Console.WriteLine("\nHashSet2の要素(更新後)");
      foreach (string res in set2){
         Console.WriteLine(res);
      }
      Console.WriteLine("HashSet2の要素数(更新後) = " + set2.Count);
      Console.WriteLine("\nset1はset2の上位集合(スーパーセット)か? "+set1.IsSupersetOf(set2));
   }
}

出力結果

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

HashSet1の要素
AB
CD
EF
IJ
KL
OP
HashSet2の要素
EF
KL
HashSet2の要素数 = 2
HashSet2の要素(更新後)
EF
HashSet2の要素数(更新後) = 1
set1はset2の上位集合(スーパーセット)か? True

この例では、set2.Remove("KL")によって「KL」という要素がHashSet2から削除され、要素数が2から1に変化していることが確認できます。また、IsSupersetOf()メソッドを使うことで、set1がset2の上位集合であるかどうかも判定しています。

例2:整数のHashSetから要素を削除する

続いて、整数型(int)のHashSetから要素を削除する別の例を見てみましょう。

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<int> set1 = new HashSet<int>();
      set1.Add(100);
      set1.Add(200);
      set1.Add(300);
      set1.Add(400);
      set1.Add(500);
      set1.Add(600);
      Console.WriteLine("HashSetの要素");
      foreach(int val in set1){
         Console.WriteLine(val);
      }
      Console.WriteLine("HashSetの要素数 = " + set1.Count);
      // 300を削除
      set1.Remove(300);
      Console.WriteLine("\nHashSetの要素(更新後)");
      foreach (int res in set1){
         Console.WriteLine(res);
      }
      Console.WriteLine("HashSetの要素数(更新後) = " + set1.Count);
   }
}

出力結果

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

HashSetの要素
100
200
300
400
500
600
HashSetの要素数 = 6
HashSetの要素(更新後)
100
200
400
500
600
HashSetの要素数(更新後) = 5

ポイントまとめ

  • Remove(T item):指定した要素をHashSetから削除します。削除に成功した場合はtrue、要素が存在しない場合はfalseを返します。
  • HashSetは重複する要素を持たないため、同じ値を複数回Addしても1つだけ登録されます。
  • 削除後はCountプロパティで現在の要素数を確認できます。
  • すべての要素を一括で削除したい場合は、Clear()メソッドを使用します。
  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. C#でHashSetと指定されたコレクションに共通の要素があるか確認する方法

    C#において、HashSetと指定されたコレクションとの間に共通の要素が存在するかどうかを確認したい場合は、Overlaps() メソッドを使用します。Overlaps() メソッドは、HashSetと引数で渡されたコレクションの間に共通する要素が1つでも存在すれば true を返し、まったく存在しなければ false を返します。このメソッドは System.Collections.Generic 名前空間に含まれており、引数として IEnumerable<T> 型のコレクションを受け取ります。例1:int型のHashSetの場合まずは、整数値を格納した2つのHashSetで共通