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

C#のSortedListとは?JavaのSortedMapインターフェイスに相当するコレクションの使い方

JavaにはSortedMapインターフェイスが用意されていますが、C#ではこれに相当する機能としてSortedListクラスが提供されています。

SortedListの特徴

C#のSortedListコレクションは、キーインデックスの両方を使ってリスト内の項目にアクセスできるのが大きな特徴です。

SortedListは、配列とハッシュテーブルを組み合わせたような仕組みを持っています。キーまたはインデックスのいずれかで要素へアクセス可能で、インデックスでアクセスすればArrayListのような振る舞いになり、キーでアクセスすればHashtable(ハッシュテーブル)のような振る舞いになります。また、格納された要素は常にキーの値に基づいて自動的にソートされます。

サンプルコード

以下は、SortedListに要素を追加し、キーの一覧を表示する例です。

using System;
using System.Collections;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            SortedList sl = new SortedList();
            sl.Add("ST0", "One");
            sl.Add("ST1", "Two");
            sl.Add("ST2", "Three");
            ICollection key = sl.Keys;

            foreach(string k in key) {
                Console.WriteLine(k);
            }
        }
    }
}

実行結果

ST0
ST1
ST2

補足:ジェネリック版の活用

上記の例では非ジェネリック版のSortedListを使用していますが、型安全なコードを書きたい場合は、ジェネリック版のSortedList<TKey, TValue>SortedDictionary<TKey, TValue>を使用するのが一般的です。ボックス化・キャストの手間がなくなり、パフォーマンス面でも有利になります。挿入・削除が頻繁なケースではSortedDictionary、キーによる検索が中心のケースではSortedListが適しているとされています。

  1. C#のインターフェイスとは?基本概念と実装例をわかりやすく解説

    インターフェイスとは インターフェイス(Interface)とは、プロパティ、メソッド、イベントといったメンバーを定義するための仕組みです。大きな特徴は、インターフェイス自体にはメンバーの宣言のみが含まれ、実際の処理内容(実装)は、そのインターフェイスを実装するクラス側で定義しなければならないという点です。 この仕組みにより、派生クラスが共通して従うべき標準的な構造を提供できます。結果として、コードの一貫性が保たれ、保守性や拡張性の向上にもつながります。 インターフェイスの宣言方法 C#では、interfaceキーワードを使って次のようにインターフェイスを宣言します。 public inte

  2. C#のインターフェイスとは?宣言方法と実装例をわかりやすく解説

    インターフェイスとは インターフェイスは、プロパティ、メソッド、イベントなどのメンバーを定義するための仕組みです。インターフェイスにはメンバーの「宣言」のみが含まれており、実際の処理内容(実装)は、そのインターフェイスを実装するクラス側で定義する必要があります。 この仕組みにより、インターフェイスは派生クラスが従うべき標準的な構造(いわば「契約」)を提供します。複数のクラスに対して共通のメンバーを持つことを強制できるため、コードの一貫性や保守性の向上に役立ちます。 インターフェイスの宣言方法 C#では、interfaceキーワードを使用してインターフェイスを宣言します。命名規則として、インタ