C#のOrderedDictionaryで値を含むICollectionを取得する方法
OrderedDictionaryに格納されたすべての値を含むICollectionを取得するには、Valuesプロパティを使用します。この記事では、具体的なコード例を通してその使い方を解説します。
Valuesプロパティとは
System.Collections.Specialized名前空間に属するOrderedDictionaryクラスは、キーと値のペアを挿入順に保持できるコレクションです。Valuesプロパティにアクセスすると、辞書内のすべての値を格納したICollectionオブジェクトが返されます。取得したコレクションは、CopyToメソッドを使って配列へコピーすることで、ループ処理などで扱いやすくなります。
サンプルコード1
まず、数値のキーに対して英語の単語を値として登録したOrderedDictionaryから、値の一覧を取得する例を見てみましょう。
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");
ICollection col = dict.Values;
String[] strVal = new String[dict.Count];
col.CopyTo(strVal, 0);
Console.WriteLine("値を表示します...");
for (int i = 0; i < dict.Count; i++) {
Console.WriteLine(strVal[i]);
}
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
値を表示します... One Two Three Four Five Six Seven Eight
処理の流れのポイント
- dict.Values: OrderedDictionary内のすべての値をICollectionとして取得します。
- CopyTo(strVal, 0): 取得したコレクションの要素を、インデックス0から配列strValへコピーします。
- forループ: 配列の要素を順番に出力し、挿入順に値が並んでいることを確認できます。
サンプルコード2
続いて、文字列のキーに対して人名を値として登録した別の例を見てみましょう。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main(){
OrderedDictionary dict = new OrderedDictionary();
dict.Add("One", "John");
dict.Add("Two", "Tim");
dict.Add("Three", "Katie");
dict.Add("Four", "Andy");
dict.Add("Five", "Gary");
dict.Add("Six", "Amy");
ICollection col = dict.Values;
String[] strVal = new String[dict.Count];
col.CopyTo(strVal, 0);
Console.WriteLine("値を表示します...");
for (int i = 0; i < dict.Count; i++) {
Console.WriteLine(strVal[i]);
}
}
}出力結果
このコードを実行すると、次の出力が得られます。
値を表示します... John Tim Katie Andy Gary Amy
まとめ
OrderedDictionaryのValuesプロパティを使えば、辞書に登録されたすべての値をICollectionとして簡単に取得できます。さらにCopyToメソッドで配列にコピーすれば、インデックスを使った柔軟なデータ操作が可能になります。キーと同様に、値も挿入された順序で保持されるため、順序が重要となる場面でOrderedDictionaryは非常に有用です。
-
C#のStringDictionaryで値のコレクションを取得する方法
C#のStringDictionaryから値のコレクションを取得するには、Keysプロパティで全キーを配列にコピーし、そのキーを使って各値へアクセスします。StringDictionaryは、キーと値がどちらも文字列型として扱われる特殊なディクショナリで、System.Collections.Specialized名前空間に属しています。 値のコレクションを取得する基本手順 Countプロパティで要素数を取得し、同じサイズのString型配列を用意します Keys.CopyTo()メソッドで、すべてのキーを配列の先頭(インデックス0)からコピーします コピーしたキーをインデクサ(strDic
-
C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方
C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();