C#のSortedListで指定したキーのインデックスを取得する方法(IndexOfKeyメソッド)
C#のSortedListオブジェクトから、指定したキーに対応するインデックス(位置)を取得したい場合は、IndexOfKey()メソッドを使用します。このメソッドは、引数に渡したキーがSortedList内のどの位置にあるかを0から始まるインデックス番号で返します。
なお、SortedListはキーによって自動的にソートされて格納されるため、要素を追加した順序とインデックスの順序は一致しない点に注意してください。以下のサンプルコードでその挙動を確認してみましょう。
サンプルコード1:IndexOfKey()の基本的な使い方
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の要素一覧...");
foreach(DictionaryEntry d in list) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nキー One のインデックス = " + list.IndexOfKey("One"));
}
}実行結果
SortedListの要素一覧... Five Operations Four Purchase One Finance Six IT Three Sales Two Marketing キー One のインデックス = 2
この例では、追加した順序に関係なく、要素がキーのアルファベット順(Five → Four → One → Six → Three → Two)に自動的に並び替えられていることがわかります。そのため、キー「One」のインデックスは2として返されます。
サンプルコード2:複数のSortedListでインデックスを取得する
次に、数値を値とするSortedListと、文字列を値とするSortedListの2つを使った例を見てみましょう。
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の要素一覧...");
foreach(DictionaryEntry d in list1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.Write("キー Five のインデックス = " + list1.IndexOfKey("Five"));
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("\n\nSortedList2の要素一覧...");
foreach(DictionaryEntry d in list2) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.Write("キー B のインデックス = " + list2.IndexOfKey("B"));
}
}実行結果
SortedList1の要素一覧... Eight 8 Five 5 Four 4 Nine 9 One 1 Seven 7 Six 6 Ten 10 Three 3 Two 2 キー Five のインデックス = 1 SortedList2の要素一覧... A Accessories B Books C Smart Wearable Tech D Home Appliances キー B のインデックス = 1
IndexOfKey()メソッドのポイント
- 戻り値: 指定したキーのインデックス(0から始まる整数)を返します。
- キーが存在しない場合: -1 を返します。存在チェックにも利用できます。
- 計算量: SortedListは内部でバイナリ検索を行うため、効率的にインデックスを特定できます。
- 注意点: キーは大文字小文字が区別される場合があるため、正確なキー名を指定しましょう。
このように、IndexOfKey()メソッドを使えば、SortedList内の任意のキーの位置を簡単に取得できます。要素の順序管理や条件分岐の処理などにぜひ活用してみてください。
-
C#のSortedListで指定したインデックスの要素を削除する方法(RemoveAtメソッド)
C#のSortedListコレクションから、指定されたインデックス位置にある要素を削除するには、RemoveAt()メソッドを使用します。この記事では、RemoveAtメソッドの基本的な使い方を、実際のコード例と実行結果とともにわかりやすく解説します。RemoveAt()メソッドとはRemoveAt(int index)は、SortedList内の指定されたインデックス(0から始まる番号)にあるキーと値のペアを削除するメソッドです。削除後は、後続の要素が自動的に前に詰められ、Countプロパティの値も1つ減少します。サンプルコード1:単一の要素を削除するまずは、SortedListに複数の要素
-
C#のSortedListで指定したキーに関連付けられた値を取得・設定する方法
C#のSortedListクラスでは、インデクサ(this[])を使うことで、指定したキーに関連付けられた値を簡単に取得したり、上書き設定したりすることができます。基本的な使い方list[キー] の形式でアクセスすると、そのキーに対応する値が返されます。同じ構文で値を代入すると、既存のキーの値を更新できます。サンプルコード以下の例では、SortedListに複数のキーと値を追加し、キー「E」に関連付けられた値を取得した後、新しい値で更新しています。using System; using System.Collections; public class Demo { public sta