C#のOrderedDictionaryでIDictionaryEnumeratorオブジェクトを取得する方法
C#のOrderedDictionaryクラスでは、GetEnumerator()メソッドを呼び出すことで、IDictionaryEnumeratorオブジェクトを取得できます。この列挙子を使うと、コレクションに格納されたキーと値のペアを、追加した順序どおりに1つずつ取り出して処理することが可能です。
IDictionaryEnumeratorインターフェースは、通常のIEnumeratorに加えて、現在の要素のKeyプロパティとValueプロパティにアクセスできる点が特徴です。これにより、foreach文を使わずにwhileループとMoveNext()メソッドを組み合わせて、辞書の内容を柔軟に走査できます。
サンプルコード1:数値キーの辞書を列挙する
以下の例では、OrderedDictionaryに8つの要素を追加し、IDictionaryEnumeratorを使ってすべてのキーと値を出力しています。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
OrderedDictionary dict = new OrderedDictionary();
dict.Add("1", "One");
dict.Add("2", "Two");
dict.Add("3", "Three");
dict.Add("4", "Four");
dict.Add("5", "Five");
dict.Add("6", "Six");
dict.Add("7", "Seven");
dict.Add("8", "Eight");
IDictionaryEnumerator demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext()) {
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Key = 1, Value = One Key = 2, Value = Two Key = 3, Value = Three Key = 4, Value = Four Key = 5, Value = Five Key = 6, Value = Six Key = 7, Value = Seven Key = 8, Value = Eight
このように、要素は追加した順序(挿入順)どおりに出力されていることがわかります。これはOrderedDictionaryの大きな特徴であり、通常のHashtableとは異なる点です。
サンプルコード2:カテゴリ名を値として列挙する
続いて、別の例を見てみましょう。今度は商品カテゴリ名を値として格納したOrderedDictionaryを列挙します。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
OrderedDictionary dict = new OrderedDictionary();
dict.Add("1", "Appliances");
dict.Add("2", "Supplies");
dict.Add("3", "Electronics");
dict.Add("4", "Clothing");
dict.Add("5", "Books");
dict.Add("6", "Accessories");
IDictionaryEnumerator demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext()) {
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
}実行結果
このコードを実行すると、以下の出力が得られます。
Key = 1, Value = Appliances Key = 2, Value = Supplies Key = 3, Value = Electronics Key = 4, Value = Clothing Key = 5, Value = Books Key = 6, Value = Accessories
ポイントまとめ
GetEnumerator()メソッドにより、OrderedDictionaryからIDictionaryEnumeratorオブジェクトを取得できます。MoveNext()がtrueを返す間、whileループで各要素を順に処理します。demoEnum.Keyでキーを、demoEnum.Valueで値をそれぞれ取得できます。- OrderedDictionaryは挿入順を保持するため、列挙結果も必ず追加した順序になります。
-
C#のOrderedDictionaryで値を含むICollectionを取得する方法
OrderedDictionaryに格納されたすべての値を含むICollectionを取得するには、Valuesプロパティを使用します。この記事では、具体的なコード例を通してその使い方を解説します。ValuesプロパティとはSystem.Collections.Specialized名前空間に属するOrderedDictionaryクラスは、キーと値のペアを挿入順に保持できるコレクションです。Valuesプロパティにアクセスすると、辞書内のすべての値を格納したICollectionオブジェクトが返されます。取得したコレクションは、CopyToメソッドを使って配列へコピーすることで、ループ処理な
-
JavaScriptでオブジェクトの値を取得する方法:Object.values()と_.values()の違いを解説
JavaScriptにはObject.values()など、オブジェクトの値を取得するためのメソッドがいくつか用意されています。しかし、これらの標準メソッドでは値を取り出すまでの手順がやや長くなりがちです。そこで便利なのが、JavaScriptライブラリ「Underscore.js」が提供する_.values()メソッドです。このメソッドを使えば、forループを記述することなく、オブジェクトの値を直接取得できます。 Object.values()を使った例 まずは標準メソッドであるObject.values()を使った例です。このメソッドで取得した値を順番に表示するには、for...ofループ