Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9543

【C#】HashSet入門

$
0
0

はじめに

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

Viewing all articles
Browse latest Browse all 9543

Trending Articles