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

C#のSortedListクラスとは?主要プロパティ・メソッドとサンプルコードで徹底解説

C#のSortedListクラスは、キーによって自動的にソートされたキー/値ペアのコレクションを表します。各要素には、キーだけでなくインデックスを使ってもアクセスできるのが大きな特徴です。

この記事では、SortedListクラスの主なプロパティとメソッドを一覧形式で整理し、実際に動くサンプルコードを通して基本的な使い方を解説します。

SortedListクラスの主なプロパティ

No.プロパティと説明
1Capacity
SortedListオブジェクトの容量(格納可能な要素数)を取得または設定します。
2Count
SortedListオブジェクトに含まれる要素の数を取得します。
3IsFixedSize
SortedListオブジェクトが固定サイズかどうかを示す値を取得します。
4IsReadOnly
SortedListオブジェクトが読み取り専用かどうかを示す値を取得します。
5IsSynchronized
SortedListオブジェクトへのアクセスが同期されているかどうか(スレッドセーフかどうか)を示す値を取得します。
6Item[Object]
SortedListオブジェクト内の指定したキーに関連付けられた値を取得または設定します。
7Keys
SortedListオブジェクト内のすべてのキーを取得します。
8SyncRoot
SortedListオブジェクトへのアクセスを同期するために使用できるオブジェクトを取得します。
9Values
SortedListオブジェクト内のすべての値を取得します。

SortedListクラスの主なメソッド

No.メソッドと説明
1Add(Object, Object)
指定したキーと値を持つ要素をSortedListオブジェクトに追加します。
2Clear()
SortedListオブジェクトからすべての要素を削除します。
3Clone()
SortedListオブジェクトの簡易コピー(シャローコピー)を作成します。
4Contains(Object)
SortedListオブジェクトに特定のキーが含まれているかどうかを判定します。
5ContainsKey(Object)
SortedListオブジェクトに特定のキーが含まれているかどうかを判定します。
6ContainsValue(Object)
SortedListオブジェクトに特定の値が含まれているかどうかを判定します。
7CopyTo(Array, Int32)
SortedListの要素を、指定した配列インデックスを開始位置として1次元配列にコピーします。
8Remove(Object)
指定したキーを持つ要素をSortedListオブジェクトから削除します。
9RemoveAt(Int32)
指定したインデックス位置にある要素を削除します。

サンプル1:要素数の取得と全要素の削除

まずは、CountプロパティでSortedListに含まれる要素数を取得し、Clear()メソッドですべての要素を削除する例を見てみましょう。

using System;
using System.Collections;
public class Demo {
    public static void Main(String[] args) {
        SortedList sortedList = new SortedList();
        sortedList.Add("A", "1");
        sortedList.Add("B", "2");
        sortedList.Add("C", "3");
        sortedList.Add("D", "4");
        sortedList.Add("E", "5");
        sortedList.Add("F", "6");
        sortedList.Add("G", "7");
        sortedList.Add("H", "8");
        sortedList.Add("I", "9");
        sortedList.Add("J", "10");
        Console.WriteLine("SortedList elements...");
        foreach(DictionaryEntry d in sortedList) {
            Console.WriteLine("Key = "+d.Key + ", Value = " + d.Value);
        }
        Console.WriteLine("Count of SortedList key-value pairs = "+sortedList.Count);
        sortedList.Clear();
        Console.WriteLine("Count of SortedList (updated) = "+sortedList.Count);
    }
}

出力結果

SortedList elements...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs = 10
Count of SortedList (updated) = 0

このように、追加した10個の要素がキーの順序で自動的にソートされて表示され、Clear()を実行すると要素数が0になることが確認できます。

サンプル2:2つのSortedListオブジェクトが等しいかどうかの比較

次に、Equals()メソッドを使って、2つのSortedListオブジェクトが等しいかどうかを確認する例です。参照が同じ場合にTrueが返る点にも注目してください。

using System;
using System.Collections;
public class Demo {
    public static void Main(String[] args) {
        SortedList list1 = new SortedList();
        list1.Add("One", 1);
        list1.Add("Two ", 2);
        list1.Add("Three ", 3);
        list1.Add("Four", 4);
        list1.Add("Five", 5);
        list1.Add("Six", 6);
        list1.Add("Seven ", 7);
        list1.Add("Eight ", 8);
        list1.Add("Nine", 9);
        list1.Add("Ten", 10);
        Console.WriteLine("SortedList1 elements...");
        foreach(DictionaryEntry d in list1) {
            Console.WriteLine(d.Key + " " + d.Value);
        }
        SortedList list2 = new SortedList();
        list2.Add("A", "Accessories");
        list2.Add("B", "Books");
        list2.Add("C", "Smart Wearable Tech");
        list2.Add("D", "Home Appliances");
        Console.WriteLine("\nSortedList2 elements...");
        foreach(DictionaryEntry d in list2) {
            Console.WriteLine(d.Key + " " + d.Value);
        }
        SortedList list3 = new SortedList();
        list3 = list2;
        Console.WriteLine("\nIs SortedList2 equal to SortedList3? = "+list3.Equals(list2));
    }
}

出力結果

SortedList1 elements...
Eight 8
Five 5
Four 4
Nine 9
One 1
Seven 7
Six 6
Ten 10
Three 3
Two 2

SortedList2 elements...
A Accessories
B Books
C Smart Wearable Tech
D Home Appliances
Is SortedList2 equal to SortedList3? = True

list3にlist2を代入しているため両者は同じインスタンスを参照しており、Equals()の結果がTrueになっています。

まとめ

SortedListクラスを使うと、キーで自動ソートされるキー/値ペアのコレクションを簡単に扱えます。Add()での要素追加、Countによる要素数取得、Clear()による全消去など、基本的な操作を押さえておくと実務でも役立ちます。なお、より新しい開発では型安全なSortedList<TKey, TValue>(System.Collections.Generic名前空間)の利用も検討するとよいでしょう。

  1. JavaScriptでオブジェクトが配列かどうか判定する方法!Array.isArray()の使い方を実例付きで解説

    JavaScriptであるオブジェクトが配列(Array)なのか、それとも別のオブジェクトなのかを判別したい場面はよくあります。そんなときに便利なのが Array.isArray() メソッドです。Array.isArray() は、引数に渡した値が配列であれば true を、そうでなければ false を返すメソッドです。この戻り値のブール値(Boolean)を確認することで、対象が配列かどうかを簡単に判定できます。Array.isArray() の基本構文Array.isArray(value)value:判定したいオブジェクトや値戻り値:配列なら true、それ以外は falsetype

  2. C#のMathF.Exp()メソッドとは?使い方とサンプルコードを解説

    C#のMathF.Exp()メソッドは、自然対数の底 e(約2.71828)を、引数で指定した数値のべき乗にして返すメソッドです。つまり、Exp(x) は「e の x 乗」を計算し、その結果を float型 で返します。構文MathF.Exp()メソッドの構文は以下の通りです。public static float Exp(float val);引数 val には、べき乗の指数となる浮動小数点数(float型)を指定します。主な特徴戻り値は常にfloat型です。計算結果がfloat型の最大値(約3.4×1038)を超える場合は、Infinity(無限大)が返されます。引数に 0 を指定すると、