C# 演習

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 のレビューも受けられます。

すべてのチャレンジ