ArrayListのジェネリック版List・LinkedList・Stack・Queueの説明をします。
インスタンス化するときに、データ型を指定するので、取り出すときキャストする必要がありません。どんなデータ型でも使用できます。
注意としては、もともとオブジェクト型なので、Stringでインスタンス化しても他の型のデータも受け入れてしまうところです。
Listクラス
'String型のListとしてインスタンス化 Dim strList As New List(Of String) strList.Add("AAA") strList.Add("BBB") 'インデックスによる参照(キャスト不要) Dim s As String = strList(1) 'Integer型のListとしてインスタンス化 Dim intList As New List(Of Integer) intList.Add(100) intList.Add(200) Dim v As Integer = intList(1)
LinkedListクラス
Listのようにインデックスによるデータの参照はできませんが、リストの途中への要素の削除と挿入が高速にできます。
Dim strLinkList = New LinkedList(Of String) '1つ目の要素を追加 strLinkList.AddFirst("First") '先頭の要素の後に追加 strLinkList.AddAfter(strLinkList.First, "After") 'すべての要素を順番に表示 For Each s In strLinkList MessageBox.Show(s) Next
Stackクラス
先入れ後出しのクラスです。
Dim intStack = New Stack(Of Integer) '要素を追加 intStack.Push(100) intStack.Push(200) intStack.Push(300) '先頭の要素を取得して削除 Dim v1 As Integer = intStack.Pop() '先頭の要素を取得(削除しません) Dim v2 As Integer = intStack.Peek() '要素を全て削除 intStack.Clear()
Queueクラス
先入れ先出しのクラスです。
Dim intQueue = New Queue(Of Integer) '要素を追加 intQueue.Enqueue(100) intQueue.Enqueue(200) intQueue.Enqueue(300) '先頭の要素を取得して削除 Dim q1 As Integer = intQueue.Dequeue() '先頭の要素を取得 Dim q2 As Integer = intQueue.Peek() 'すべての要素の削除 intQueue.Clear()