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

C#で別のコレクションからHashSetを作成する方法

C#では、既存のコレクションをコンストラクタの引数として渡すことで、簡単に新しい HashSet<T> を作成できます。この方法を使うと、元のコレクションの要素がすべてコピーされ、重複する要素は自動的に除外されます。

以下に、別のコレクションからHashSetを作成するコード例を示します。

例1: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);

        Console.WriteLine("最初のHashSetの内容:");
        foreach(int i in set1) {
            Console.WriteLine(i);
        }

        // set1を引数に渡して新しいHashSetを作成
        HashSet<int> set2 = new HashSet<int>(set1);

        Console.WriteLine("別のコレクションから作成したHashSetの内容:");
        foreach(int i in set2) {
            Console.WriteLine(i);
        }
    }
}

出力結果

最初のHashSetの内容:
100
200
300
別のコレクションから作成したHashSetの内容:
100
200
300

このように、new HashSet<int>(set1) のように既存のコレクションを指定するだけで、同じ要素を持つ新しいHashSetが生成されます。

例2:string型のコレクションからHashSetを作成(重複要素の扱い)

次に、文字列のコレクションを使用し、重複する値を追加した場合の動作を確認してみましょう。HashSetは重複を許さないため、同じ値を何度追加しても、セット内には1つだけ保持されます。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("Jacob");
        set1.Add("Tom");
        set1.Add("Harry");
        set1.Add("Harry");   // 重複
        set1.Add("Tom");     // 重複
        set1.Add("Harry");   // 重複

        Console.WriteLine("最初のHashSetの内容:");
        foreach(string i in set1) {
            Console.WriteLine(i);
        }

        // set1から新しいHashSetを作成
        HashSet<string> set2 = new HashSet<string>(set1);

        Console.WriteLine("別のコレクションから作成したHashSetの内容:");
        foreach(string i in set2) {
            Console.WriteLine(i);
        }
    }
}

出力結果

最初のHashSetの内容:
Jacob
Tom
Harry
別のコレクションから作成したHashSetの内容:
Jacob
Tom
Harry

ポイントまとめ

  • HashSetのコンストラクタに IEnumerable<T> を実装した任意のコレクション(List、配列など)を渡すことで、新しいHashSetを作成できます。
  • 重複する要素は自動的に削除されるため、リストからユニークな値だけを抽出したい場合にも便利です。
  • 元のコレクションと新しく作成したHashSetは独立しているため、片方を変更してももう片方には影響しません。
  1. C#のHashSetとは?重複要素を自動的に削除できるSetコレクションの使い方

    C#のHashSetとは C#のHashSet<T>は、System.Collections.Generic名前空間に属する最適化されたセットコレクションです。最大の特徴は、同じ要素(重複する値)を自動的に排除して格納する点にあります。そのため、配列やリストの中から重複した文字列や要素を取り除きたい場合に非常に便利です。 さらに、HashSetは内部でハッシュテーブルを使用しているため、要素の検索・追加・削除が高速に行えるというメリットもあります。 HashSetで重複する文字列を削除するサンプルコード 以下は、C#のHashSetを使って、文字列配列から重複する単語を削除する例

  2. Pythonで別の辞書の値から新しい辞書を作成・マージする3つの方法

    Pythonである辞書の値をもとに新しい辞書を作成したい場合は、既存の辞書同士をマージ(統合)するのが基本的なアプローチです。ここでは、Pythonのバージョン別に代表的な3つの方法を紹介します。方法1:**演算子でアンパックして結合(Python 3.5以降)Python 3.5以降では、**演算子を使って辞書を展開(アンパック)し、複数の辞書を簡潔に1つにまとめることができます。構文例a = {foo: 125} b = {bar: hello} c = {**a, **b} print(c)出力結果{foo: 125, bar: hello}この記法は古いバージョンのPythonではサポ