C#のHashSetとは?重複要素を自動的に削除できるSetコレクションの使い方
C#のHashSetとは
C#のHashSet<T>は、System.Collections.Generic名前空間に属する最適化されたセットコレクションです。最大の特徴は、同じ要素(重複する値)を自動的に排除して格納する点にあります。そのため、配列やリストの中から重複した文字列や要素を取り除きたい場合に非常に便利です。
さらに、HashSetは内部でハッシュテーブルを使用しているため、要素の検索・追加・削除が高速に行えるというメリットもあります。
HashSetで重複する文字列を削除するサンプルコード
以下は、C#のHashSetを使って、文字列配列から重複する単語を削除する例です。
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
string[] arr1 = {
"one",
"two",
"two",
"one",
"three"
};
Console.WriteLine(string.Join(",", arr1));
// HashSetを作成
var h = new HashSet<string>(arr1);
// 重複した単語を削除して配列に戻す
string[] arr2 = h.ToArray();
Console.WriteLine(string.Join(",", arr2));
}
}
実行結果
one,two,two,one,three one,two,three
元の配列には「two」と「one」が重複して含まれていましたが、HashSetを経由したことで、それぞれ1つだけ残った配列が出力されています。
HashSetの宣言方法
HashSetの宣言は以下のように行います。コンストラクタに既存の配列を渡すことで、生成と同時に重複要素が自動的に除去されます。
var h = new HashSet<string>(arr1);
配列に戻して重複を取り除く
作成したHashSetは、ToArray()メソッドを使うことで再び配列に変換できます。これにより、重複が取り除かれた新しい配列を簡単に取得できます。
string[] arr2 = h.ToArray();
まとめ
- HashSet<T>は重複しない要素だけを保持するセットコレクションである
- コンストラクタに配列を渡すだけで、重複を自動的に排除できる
ToArray()で配列に戻せるため、重複削除処理として手軽に使える- ハッシュテーブルベースのため、検索・追加・削除が高速
-
10.0.0.1とは?プライベートIPアドレスの意味とログイン方法・トラブル対処法
10.0.0.1は、クライアントデバイスに割り当てられたり、ネットワーク機器のデフォルトIPアドレスとして設定されたりする、プライベートIPアドレスです。 10.0.0.1とは? 10.0.0.1は、家庭向けネットワークよりも企業向けコンピューターネットワークでよく見られるIPアドレスです。家庭用ルーターでは通常、192.168.1.1や192.168.0.1など、192.168.x.x系のアドレスが使われます。ただし、家庭内のデバイスに10.0.0.1が割り当てられることもあり、その場合も他のIPアドレスとまったく同じように機能します。 クライアントデバイスが10.0.0.xの範囲(例:1
-
Java 9のコレクションファクトリメソッドとは?条件と使い方をわかりやすく解説
Java 9で導入されたコレクションファクトリメソッドJava 9では、Collections APIにファクトリメソッドが新しく追加されました。List.of()、Set.of()、Map.of()、Map.ofEntries()といった静的ファクトリメソッドを利用することで、イミュータブル(不変)なリスト・セット・マップを簡単に作成できます。従来のようにArrays.asList()やCollections.unmodifiableList()などを組み合わせて書く必要がなくなり、コードの行数を大幅に削減できるのが大きなメリットです。コレクションファクトリメソッドの条件これらのファクトリメ