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

【C#】SortedListオブジェクトの指定したインデックスからキーを取得する方法

C#のSortedListオブジェクトから、指定したインデックス位置にあるキーを取得するには、GetKey()メソッドを使用します。このメソッドは、引数として渡したインデックスに対応するキーを返します。

なお、SortedListはキーに基づいて自動的にソートされるため、インデックスは要素を追加した順序ではなく、ソート後の並び順に基づいて決まる点に注意してください。また、IndexOfKey()メソッドを使えば、逆に指定したキーのインデックスを調べることも可能です。

例1:数値と文字列を格納したSortedListからキーを取得する

以下のコードでは、2つのSortedListを作成し、IndexOfKey()でキーのインデックスを確認したうえで、GetKey()により指定インデックスのキーを取得しています。

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);
      }
      Console.Write("Index at key Five = "+list1.IndexOfKey("Five"));
      Console.Write(" Key at index 2 = "+list1.GetKey(2));
      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(" SortedList2 elements...");
      foreach(DictionaryEntry d in list2) {
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.Write("Index at key B = "+list2.IndexOfKey("B"));
   }
}

出力結果

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

SortedList1 elements...
Eight  8
Five 5
Four 4
Nine 9
One 1
Seven  7
Six 6
Ten 10
Three  3
Two  2
Index at key Five = 1
Key at index 2 = Four
SortedList2 elements...
A Accessories
B Books
C Smart Wearable Tech
D Home Appliances
Index at key B = 1

この結果から、IndexOfKey("Five")はキー「Five」のインデックス「1」を返し、GetKey(2)によってインデックス2の位置にあるキー「Four」が正しく取得できていることがわかります。SortedList1では英単語のアルファベット順に自動ソートされているため、このような並びになっています。

例2:部門データを格納したSortedListからキーを取得する

続いて、別の例を見てみましょう。ここでは部署名を値としたSortedListに対して、同じ操作を行います。

using System;
using System.Collections;
public class Demo {
   public static void Main(String[] args) {
      SortedList list = new SortedList();
      list.Add("One", "Finance");
      list.Add("Two", "Marketing");
      list.Add("Three", "Sales");
      list.Add("Four", "Purchase");
      list.Add("Five", "Operations");
      list.Add("Six", "IT");
      Console.WriteLine("SortedList elements...");
      foreach(DictionaryEntry d in list) {
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine(" Index at key One = "+list.IndexOfKey("One"));
      Console.Write(" Key at index 5 = "+list.GetKey(5));
   }
}

出力結果

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

SortedList elements...
Five Operations
Four Purchase
One Finance
Six IT
Three Sales
Two Marketing
Index at key One = 2
Key at index 5 = Two

この例でも同様に、IndexOfKey("One")は「2」を返し、GetKey(5)はインデックス5のキー「Two」を返しています。キーがアルファベット順(Five → Four → One → Six → Three → Two)にソートされているため、追加順とは異なるインデックスが割り当てられている点に注目してください。

まとめ

SortedListで特定のインデックスからキーを取得したい場合はGetKey(int index)、キーからインデックスを調べたい場合はIndexOfKey(object key)を使用します。両者を組み合わせることで、キーとインデックスを相互に変換でき、ソート済みコレクションを柔軟に操作できます。

  1. C#のSortedListで指定したインデックスの要素を削除する方法(RemoveAtメソッド)

    C#のSortedListコレクションから、指定されたインデックス位置にある要素を削除するには、RemoveAt()メソッドを使用します。この記事では、RemoveAtメソッドの基本的な使い方を、実際のコード例と実行結果とともにわかりやすく解説します。RemoveAt()メソッドとはRemoveAt(int index)は、SortedList内の指定されたインデックス(0から始まる番号)にあるキーと値のペアを削除するメソッドです。削除後は、後続の要素が自動的に前に詰められ、Countプロパティの値も1つ減少します。サンプルコード1:単一の要素を削除するまずは、SortedListに複数の要素

  2. C#のSortedListで指定したキーに関連付けられた値を取得・設定する方法

    C#のSortedListクラスでは、インデクサ(this[])を使うことで、指定したキーに関連付けられた値を簡単に取得したり、上書き設定したりすることができます。基本的な使い方list[キー] の形式でアクセスすると、そのキーに対応する値が返されます。同じ構文で値を代入すると、既存のキーの値を更新できます。サンプルコード以下の例では、SortedListに複数のキーと値を追加し、キー「E」に関連付けられた値を取得した後、新しい値で更新しています。using System; using System.Collections; public class Demo { public sta