C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】SortedSetの作成方法と基本操作をサンプルコードで解説

C#のSortedSet<T>は、要素を自動的に昇順に並べ替えて保持するジェネリックコレクションです。重複する要素は登録できず、追加した順序にかかわらず常にソートされた状態が維持されるため、順序付きのユニークなデータ集合を扱うのに非常に便利です。

例1:SortedSetの作成と要素の取得

まず、文字列を格納するSortedSetを作成し、foreachループとGetEnumerator()メソッドで取得したEnumeratorの2つの方法で要素を取り出す例を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      SortedSet<string> set1 = new SortedSet<string>();
      set1.Add("AB");
      set1.Add("BC");
      set1.Add("CD");
      set1.Add("EF");

      Console.WriteLine("Elements in SortedSet1...");
      foreach (string res in set1) {
         Console.WriteLine(res);
      }

      SortedSet<string> set2 = new SortedSet<string>();
      set2.Add("BC");
      set2.Add("CD");
      set2.Add("DE");
      set2.Add("EF");
      set2.Add("AB");
      set2.Add("HI");
      set2.Add("JK");

      Console.WriteLine("Elements in SortedSet2 (Enumerator for SortedSet)...");
      SortedSet<string>.Enumerator demoEnum = set2.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }
   }
}

実行結果

このコードを実行すると、次のような出力が得られます。

Elements in SortedSet1...
AB
BC
CD
EF
Elements in SortedSet2 (Enumerator for SortedSet)...
AB
BC
CD
DE
EF
HI
JK

どちらの方法でも、要素が追加した順序ではなく昇順に並んで表示されている点に注目してください。これがSortedSetの大きな特徴です。

例2:RemoveWhereメソッドで条件に一致する要素を削除する

続いて、RemoveWhere()メソッドを使って、指定した条件に一致する要素を一括で削除する例を紹介します。ここでは「10の倍数」という条件を満たす要素をすべて削除しています。

using System;
using System.Collections.Generic;

public class Demo {
   private static bool demo(int i) {
      return ((i % 10) == 0);
   }

   public static void Main(String[] args) {
      SortedSet<int> set1 = new SortedSet<int>();
      set1.Add(200);
      set1.Add(215);
      set1.Add(310);
      set1.Add(500);
      set1.Add(600);

      Console.WriteLine("SortedSet elements...");
      foreach (int i in set1) {
         Console.WriteLine(i);
      }

      Console.WriteLine(" ");

      set1.RemoveWhere(demo);

      Console.WriteLine("SortedSet after removing some elements...");
      foreach (int i in set1) {
         Console.WriteLine(i);
      }
   }
}

実行結果

このコードを実行すると、次のような出力が得られます。

SortedSet elements...
200
215
310
500
600
SortedSet after removing some elements...
215

初期状態では 200・215・310・500・600 の5つの要素が格納されていますが、RemoveWhere()の呼び出し後は、10の倍数ではない「215」だけが残ります。引数として渡した述語(Predicate)メソッドが true を返した要素のみが削除される仕組みです。

まとめ

  • SortedSet<T>は、要素を常に昇順に自動ソートし、重複を許さないコレクションである
  • 要素の列挙にはforeachのほか、GetEnumerator()でEnumeratorを明示的に取得する方法もある
  • RemoveWhere()メソッドを使えば、条件に一致する要素をまとめて効率的に削除できる
  1. PowerPointでラジアルリスト(放射状リスト)を作成する方法

    一瞬で聴衆の注目を集められるリストを作りたいと思ったことはありませんか?Microsoft PowerPointでは「ラジアルリスト(放射状リスト)」を作成でき、プレゼンテーションに魅力的な印象を与えることができます。ラジアルリストは、複数の要素がひとつの中心的なアイデアへと集約されていく様子を視覚的に表現できる図です。 PowerPointでラジアルリストを作成する手順 PowerPointでSmartArtを使ってラジアルリストを作成するには、以下の手順に従ってください。 1. SmartArtでラジアルリストを挿入する まず、PowerPointを起動します。 挿入タブをクリックし、イラ

  2. PowerPointでタイムラインを作成する方法|SmartArtとテンプレートの使い方を解説

    タイムラインチャートとは、個人の人生における主な出来事やプロジェクトのマイルストーンなど、一連の出来事を視覚的に表現した図のことです。タイムラインを作成した後も、日付の追加や移動、さまざまなスタイルやレイアウトの適用、色の変更などを自由に行えます。この記事では、Microsoft PowerPointでSmartArtまたはタイムラインテンプレートを使ってタイムラインを作成する方法をわかりやすく解説します。 タイムラインを作成するには? タイムラインを作成するには、まず何を表現したいのかを明確にし、出来事を示すタイトルを決める必要があります。そのうえで、描きたい期間(セグメント)を決定し、タイ