C#でHashSetに要素を追加する方法|Addメソッドの使い方と実行例
C#で HashSet<T> に要素を追加するには、Add() メソッドを使用します。HashSet は同じ値(重複)を保持しないコレクションであり、Add メソッドに渡した値がまだセット内に存在しない場合にのみ追加されます。ここでは、実際のコード例と実行結果をもとに、基本的な使い方をわかりやすく解説します。
例1:文字列の HashSet に要素を追加する
まずは string 型の HashSet に複数の要素を追加し、foreach ループと Enumerator の2通りの方法で内容を表示する例です。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
HashSet<string> set1 = new HashSet<string>();
set1.Add("A");
set1.Add("B");
set1.Add("C");
set1.Add("D");
set1.Add("E");
set1.Add("F");
set1.Add("G");
set1.Add("H");
Console.WriteLine("Elements in HashSet1...");
foreach (string res in set1){
Console.WriteLine(res);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("John");
set2.Add("Jacob");
set2.Add("Ryan");
set2.Add("Tom");
set2.Add("Andy");
set2.Add("Tim");
set2.Add("Steve");
set2.Add("Mark");
Console.WriteLine("Elements in HashSet2... (Enumerator iterating through HashSet)");
HashSet<string>.Enumerator demoEnum = set2.GetEnumerator();
while (demoEnum.MoveNext()) {
string res = demoEnum.Current;
Console.WriteLine(res);
}
Console.WriteLine("Is HashSet1 equal to HashSet2? = "+set1.Equals(set2));
}
}
実行結果
このコードを実行すると、次のような出力が得られます。
Elements in HashSet1... A B C D E F G H Elements in HashSet2... (Enumerator iterating through HashSet) John Jacob Ryan Tom Andy Tim Steve Mark Is HashSet1 equal to HashSet2? = False
set1 には A〜H の8つの要素が追加され、foreach ループによって順番に出力されています。一方 set2 では、GetEnumerator() メソッドで取得した Enumerator を使い、MoveNext() と Current プロパティで各要素を1つずつ取り出しています。最後の Equals() メソッドによる比較では、両者の内容が異なるため False が返されます。
例2:int 型の HashSet と IsSubsetOf() の活用
続いて、int 型の HashSet に要素を追加し、IsSubsetOf() メソッドであるセットが別のセットの部分集合かどうかを判定する例を見てみましょう。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
HashSet<int> set1 = new HashSet<int>();
set1.Add(100);
set1.Add(200);
Console.WriteLine("Elements in HashSet1...");
foreach (int res in set1){
Console.WriteLine(res);
}
HashSet<int> set2 = new HashSet<int>();
set2.Add(100);
set2.Add(200);
Console.WriteLine("Elements in HashSet2...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("Is set1 a subset of set2? "+set1.IsSubsetOf(set2));
}
}
実行結果
このコードを実行すると、次のような出力が得られます。
Elements in HashSet1... 100 200 Elements in HashSet2... 100 200 Is set1 a subset of set2? True
set1 のすべての要素(100 と 200)が set2 にも含まれているため、IsSubsetOf() は True を返します。
まとめ:HashSet の要素追加のポイント
- Add() メソッド:HashSet に要素を追加します。戻り値は bool 型で、要素が新しく追加されれば true、すでに存在して追加されなかった場合は false を返します。
- 重複は自動的に排除:HashSet は同一の要素を1つしか保持しないため、重複チェックのコードを自分で書く必要がありません。
- foreach / GetEnumerator():どちらの方法でも HashSet 内の全要素を簡単に列挙できます。
- Equals() / IsSubsetOf():コレクション同士の等価比較や部分集合の判定など、集合操作も直感的なメソッドで行えます。
-
AndroidでConcurrentLinkedDequeの末尾に要素を追加する方法を解説
ConcurrentLinkedDequeとはConcurrentLinkedDequeは、リンクノードをベースとしたサイズ制限のない両端キュー(Deque)です。内部でロックフリーのアルゴリズムを採用しており、複数のスレッドから安全に要素へアクセスできるスレッドセーフなデータ構造として知られています。この記事では、AndroidアプリでConcurrentLinkedDequeの末尾に要素を追加する方法を、具体的なコード例とともにステップごとに解説します。ステップ1:プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Pr
-
AndroidでConcurrentLinkedDequeの先頭に要素を追加する方法を解説
ConcurrentLinkedDequeとは例に入る前に、ConcurrentLinkedDequeについて簡単に説明します。ConcurrentLinkedDequeは、リンクノードをベースとした容量制限のない(無界)両端キュー(Deque)です。内部がロックフリーのアルゴリズムで実装されているため、複数のスレッドから同時に要素へアクセスしても、安全性が保証されるのが大きな特徴です。この記事では、AndroidアプリにおいてConcurrentLinkedDequeの先頭(最初)に要素を追加する方法を、サンプルコードとともに解説します。実装手順ステップ1:プロジェクトの作成まず、Andro