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()