C#のHashSetで重複のないタグを取り出す
このレッスンでは、大文字と小文字の違いを無視して、HashSetで重複のないタグだけを残します。
はじめに
HashSet<T>は各値を1回だけ保存するコレクションなので、記事のタグ(tag)の一覧のように値がそれぞれ1つであってほしい場面にぴったりです。HashSetは、ある値がすでに含まれているかもとても速く確認できます。
HashSetは比較子StringComparer.OrdinalIgnoreCaseを使って作られているので、"C#"と"c#"は同じタグとみなされます。3つの値で初期化すると重複したタグは無視され、要素は2つだけになります。この比較子がなければ、2つの書き方は別々のタグになってしまいます。
動きで理解する
演算を選ぶと、結果が図の中で強調されます。すでに入っている値を追加すると、重複が無視されることがわかります。
実行できる C# の例
C#
Program.cs
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tags = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "C#", "dotnet", "c#" };
Console.WriteLine(tags.Count);
}
}
2デバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ