ここでは、ハッシュテーブルとして働くジェネリックコレクションであるDictionary(System.Collections.Generic名前空間)のキーと値を配列やListに変換する方法を紹介します。なおDictionaryクラスは、.NET Framework 2.0以降で使用できます。
KeyCollection.CopyToメソッドとValueCollection.CopyToメソッドを使用して、Dictionaryのキーや値を配列にコピーすることができます。
以下にその例を示します。
'Imports System.Collections.Generic '配列に変換するDictionary Dim dic As New Dictionary(Of Integer, String)() dic.Add(1, "いち") dic.Add(2, "に") dic.Add(3, "さん") 'キーを配列に変換する '配列を作成する Dim keys As Integer() = New Integer(dic.Keys.Count - 1) {} 'キーを配列にコピーする dic.Keys.CopyTo(keys, 0) '値を配列に変換する Dim vals As String() = New String(dic.Values.Count - 1) {} dic.Values.CopyTo(vals, 0)
//using System.Collections.Generic; //配列に変換するDictionary Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "いち"); dic.Add(2, "に"); dic.Add(3, "さん"); //キーを配列に変換する //配列を作成する int[] keys = new int[dic.Keys.Count]; //キーを配列にコピーする dic.Keys.CopyTo(keys, 0); //値を配列に変換する string[] vals = new string[dic.Values.Count]; dic.Values.CopyTo(vals, 0);
List<T>(IEnumerable<T>)コンストラクタを使えば、Dictionaryのキーや値のコレクションを基にしてListを作成できます。
'Imports System.Collections.Generic 'Listに変換するDictionary Dim dic As New Dictionary(Of Integer, String)() dic.Add(1, "いち") dic.Add(2, "に") dic.Add(3, "さん") 'キーをListに変換する Dim keysList As New List(Of Integer)(dic.Keys) '値をListに変換する Dim valsList As New List(Of String)(dic.Values)
//using System.Collections.Generic; //Listに変換するDictionary Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "いち"); dic.Add(2, "に"); dic.Add(3, "さん"); //キーをListに変換する List<int> keysList = new List<int>(dic.Keys); //値をListに変換する List<string> valsList = new List<string>(dic.Values);
.NET Framework 3.5以降でLINQが使えるのであれば、Enumerable.ToArrayメソッドを使って配列に変換できます。Listに変換するのであれば、Enumerable.ToListメソッドを使います。
'Imports System.Linq 'Imports System.Collections.Generic '配列に変換するDictionary Dim dic As New Dictionary(Of Integer, String)() dic.Add(1, "いち") dic.Add(2, "に") dic.Add(3, "さん") 'キーを配列に変換する Dim keysArray As Integer() = dic.Keys.ToArray() '値を配列に変換する Dim valsArray As String() = dic.Values.ToArray() 'キーをListに変換する Dim keysList As List(Of Integer) = dic.Keys.ToList() '値をListに変換する Dim valsList As List(Of String) = dic.Values.ToList()
//using System.Linq; //using System.Collections.Generic; //配列に変換するDictionary Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "いち"); dic.Add(2, "に"); dic.Add(3, "さん"); //キーを配列に変換する int[] keysArray = dic.Keys.ToArray(); //値を配列に変換する string[] valsArray = dic.Values.ToArray(); //キーをListに変換する List<int> keysList = dic.Keys.ToList(); //値をListに変換する List<string> valsList = dic.Values.ToList();