.net column

.NET開発者のためのブログメディア
データのアップデート

C#のHashSetクラスで要素を重複なく操作する方法

2020年04月14日

C#でプログラミングを行う場合には、「Hashset」というコレクションクラスを使用することができます。これは要素の重複を許可しない集合構造を表します。数学の集合にもよく似た構造です。

PG
要素の重複を許可しないということは、大量のデータを扱うときに役立ちそうですね。
PL
そうなんです。また、Hashsetは要素の順序を変えずにそのまま出力してくれるので、並び替えたくないようなデータを扱うときにすごく便利なんですよ。

HashSetクラスの概要と使い方

HashsetはC#において、何らかの要素(オブジェクト)の重複を省いて一覧として保持したい時に使う、要素の重複を許さないコレクションクラスです。例えば”A,B,C,A”と要素が並んでいます。このまま実行すれば結果は”A,B,C,A”と、そのまま出力されます。しかし、Hashsetクラスを使用して実行すると結果は”A,B,C,”となり、重複した”A”という要素を省いて処理してくれます。以下ではHashsetとAddメソッド、Tolistメソッドを使用した使用例を紹介します。

new HashSet();でHashSetを作り、それに要素をAddメソッドで”Blue,Red,Yellow,Red,Green”の順番で追加します。

ToListメソッドにより、それらの要素のリストを作成し出力すると結果は”Blue,Red,Yellow,Green”となります。

Hashsetの特徴

なぜ要素の配列をバラバラにしたかというとHashsetでは要素の序列(ソート)が保証されないからです。Hashsetの他にも重複する要素を省いてくれるクラスはありますが、ソート処理にも少しとはいえ時間がかかります。要素をソートする必要性がない場合は、Hashsetを有効に活用しましょう。

PG
要素の順序を変えないまま出力してくれるとは、処理が速くなるポイントだったんですね。
PL
特に大量のデータを扱うときは、必要に応じてクラスを使い分けることもとても大事になります。

活用方法が豊富なHashsetクラス

今回はHashsetクラスで新しい要素を追加するときAddメソッドを使用しました。HashsetクラスのAddメソッドは便利になっており、すでに要素が存在していた場合には”false”を返して、要素が追加できた場合には”true”を返すことができます。また、Hashsetオブジェクトの和集合や差集合、積集合といった集合演算を行うメソッドも用意されています。大量のデータを扱うのに重複は付き物です。Hashsetクラスを有効に活用しましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)