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

C#のSortedSetで最小値を取得する方法(Minプロパティの使い方)

C#のSortedSet<T>クラスには、コレクション内の最小値を簡単に取得できるMinプロパティが用意されています。この記事では、Minプロパティを使ってSortedSetから最小値を取得する方法を、具体的なコード例とともに解説します。

Minプロパティとは

SortedSet<T>は要素が常にソートされた状態で保持されるコレクションです。Minプロパティにアクセスすると、セット内の最小の要素を取得できます。同様に、Maxプロパティを使えば最大値も取得可能です。これらのプロパティはO(log n)の計算量で動作するため、効率的に最小値・最大値を求められます。

基本的な使用例(文字列の場合)

まず、文字列を格納したSortedSetから最小値と最大値を取得する例を見てみましょう。

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("SortedSet1の要素一覧...");
      foreach (string res in set1) {
         Console.WriteLine(res);
      }

      Console.WriteLine("SortedSet1の最大要素 = " + set1.Max);
      Console.WriteLine("SortedSet1の最小要素 = " + set1.Min);

      // 列挙子を使った2つ目のSortedSet
      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("SortedSet2の要素一覧(列挙子を使用)...");
      SortedSet<string>.Enumerator demoEnum = set2.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }

      Console.WriteLine("SortedSet2の最大要素 = " + set2.Max);
      Console.WriteLine("SortedSet2の最小要素 = " + set2.Min);
   }
}

実行結果

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

SortedSet1の要素一覧...
AB
BC
CD
EF
SortedSet1の最大要素 = EF
SortedSet1の最小要素 = AB
SortedSet2の要素一覧(列挙子を使用)...
AB
BC
CD
DE
EF
HI
JK
SortedSet2の最大要素 = JK
SortedSet2の最小要素 = AB

文字列の場合は辞書順(アルファベット順)で比較されるため、「AB」が最小値として取得されていることがわかります。

数値の場合の使用例

次に、整数を格納したSortedSetでの例を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      SortedSet<int> set1 = new SortedSet<int>();
      set1.Add(5);
      set1.Add(50);
      set1.Add(20);
      set1.Add(10);
      set1.Add(70);
      set1.Add(60);
      set1.Add(55);
      set1.Add(95);

      Console.WriteLine("SortedSetの要素一覧...");
      foreach (int res in set1) {
         Console.WriteLine(res);
      }

      Console.WriteLine("SortedSetの最大要素 = " + set1.Max);
      Console.WriteLine("SortedSetの最小要素 = " + set1.Min);
   }
}

実行結果

SortedSetの要素一覧...
5
10
20
50
55
60
70
95
SortedSetの最大要素 = 95
SortedSetの最小要素 = 5

追加した順序に関係なく、要素は自動的に昇順でソートされ、Minプロパティによって最小値「5」が正しく取得されています。

ポイントまとめ

  • Minプロパティ:SortedSet内の最小値を取得する
  • Maxプロパティ:SortedSet内の最大値を取得する
  • 文字列の場合は辞書順、数値の場合は数値の大小で比較される
  • SortedSetは重複する要素を自動的に除外し、常にソートされた状態を保つ
  • セットが空の場合にMinMaxにアクセスすると例外が発生するため、事前にCountプロパティで要素数を確認すると安全

このように、C#のSortedSet<T>を使えば、ソート済みのコレクションから最小値・最大値を簡単かつ効率的に取得できます。データの並び替えと極値の取得を頻繁に行う処理では、非常に便利なクラスです。

  1. 【C#】SortedSetオブジェクトが指定されたコレクションの真部分集合かどうかを確認する方法

    C#では、SortedSet<T>クラスに用意されているIsProperSubsetOfメソッドを使うことで、あるSortedSetオブジェクトが指定されたコレクションの真部分集合(プロパー・サブセット)であるかどうかを簡単に確認できます。 真部分集合とは、基準となるコレクションのすべての要素を含みながら、そのコレクションそのものとは一致しない集合のことです。つまり、2つのセットがまったく同じ要素を持つ場合は、たとえ一方が他方の部分集合であっても「真部分集合」にはなりません。このメソッドは条件を満たす場合にtrue、満たさない場合にfalseを返します。 例1:真部分集合であるケー

  2. Python Pandas – 順序付きCategoricalIndexから最小値を取得する方法

    Pandasで順序付きCategoricalIndex(カテゴリカルインデックス)の最小値を取得するには、catIndex.min()メソッドを使用します。この記事では、実際のコード例とともに、手順をわかりやすく解説していきます。1. ライブラリのインポートまずは、必要なライブラリをインポートしましょう。import pandas as pd2. 順序付きCategoricalIndexの作成次に、「categories」パラメータを使ってカテゴリを設定し、「ordered」パラメータにTrueを指定することで、カテゴリカルデータを順序付きとして扱います。ここでは「p」「q」「r」「s」という