LoginSignup
7
6

More than 3 years have passed since last update.

【C#】HashSet入門

Posted at

はじめに

C#には重複したオブジェクトを追加できないリストクラスがある。
「HashSet」と呼ばれるクラスで、使いどころによっては非常に便利である。
通常のListクラスと似たような感覚で使えるので、マスターする価値は大いにある。

HashSetクラスの特徴

・重複したオブジェクトを追加できない(全ての値がユニークでなければならない)
→重複チェックの手間が省ける
・順序がないため配列の順番が不安定

HashSetクラスの使い方

using System.Collections.Generic;

ジェネリックコレクションを必ずusingする。

var list = new HashSet<string>();
string list = new HashSet<string>();

Listと同じように、変数にインスタンス化したクラスを代入して使用する。

HashSetへの要素のセット

//初期値のセット
var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Addメソッドで要素を追加
list.Add("メロン");

//要素の取り出し
foreach (var item in list)
{
    Console.WriteLine(item); //りんご みかん ぶどう メロン
}

同じ要素がすでに存在している場合、要素をセットできない

var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Addメソッドで「りんご」を追加
list.Add("りんご");

//要素の取り出し
foreach (var item in list)
{
    //「りんご」はすでに存在しているので末尾に新しく追加はできない
  Console.WriteLine(item); //りんご みかん ぶどう
}

指定した要素があるかを確認する

var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Containsメソッドで指定した要素があるかを確認する
foreach (var item in list)
{
    //「りんご」がリストにあるかどうかチェック。あればTrue、なければFalseを返す
  Console.WriteLine(list.Contains("りんご"); //True
}

指定した要素を削除する

var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Removeメソッドで指定した要素を削除する
list.Remove("りんご");

foreach (var item in list)
{
    //「りんご」がリストから削除されていることがわかる
  Console.WriteLine(item); //みかん ぶどう
}

要素数を取得する

var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Countメソッドで要素数を取得
Console.WriteLine(list.Count()); //3

要素を全て削除する

var list = new HashSet<string>() { "りんご", "みかん", "ぶどう" };

//Clearメソッドでリスト内の全要素を削除
list.Clear();

Console.WriteLine(list.Count()); //0
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6