サイズが動的に拡大されるので、配列を使うより便利だ。
ArrayList クラスのオブジェクトを生成する
CreateObject 関数を使ってオブジェクトを作る。
Dim list Set list = CreateObject("System.Collections.ArrayList")
要素を追加する
Add メソッドでコレクションの末尾に要素を追加できる。
list.Add "Hello" list.Add "World" list.Add "!"
指定した位置に要素を追加する
Insert メソッドでコレクションの指定した位置に要素を挿入できる。
Insert(〈要素を挿入する位置(0 ~)〉, 〈挿入する要素〉)たとえば、先頭に要素を挿入するなら以下のように書く。
list.Insert 0, "テストデータ"指定した要素を削除する
Remove メソッドで指定した要素に該当する、最初に見つかった要素を削除できる。
Remove(〈削除する要素〉)たとえば、以下のように書くと “Hello” が削除される。
(消されるのは最初に見つかった要素のみ)
list.Add "Hello" list.Add "World" list.Add "Hello" list.Add "!" 'この時点でコレクションの中身は、"Hello", "World", "Hello", "!" list.Remove "Hello" 'この時点でコレクションの中身は、"World", "Hello", "!"
指定した位置にある要素を削除する
RemoveAt メソッドで指定した位置にある要素を削除できる。
RemoveAt(〈削除する要素の位置(0 ~)〉)たとえば、先頭の要素を削除するなら以下のように書く。
list.RemoveAt 0格納されている要素をすべて削除する
Clear メソッドですべての要素を削除できる。
Count は 0 に設定されるが、 Capacity は変更されない点に注意する。
list.Clearコレクション内の要素を並べ替える
list.Sort要素がコレクション内に存在するか判断する
Contains メソッドで要素がコレクション内に存在するか判断できる。
If list.Contains("Hello") Then WScript.Echo "存在します" Else WScript.Echo "存在しません" End If
コレクション内の要素数を取得する
Count プロパティでコレクション内の要素数を取得できる。
list.Add "Hello" list.Add "World" list.Add "!" WScript.Echo list.Count ' → 3
コレクションに格納できる要素数を取得する
Capacity プロパティでコレクションに格納できる要素数が取得/設定できる。
Dim list Set list = CreateObject("System.Collections.ArrayList") WScript.Echo list.Capacity & " : " & list.Count ' → 0 : 0(初期値はどちらも 0) list.Add "Hello" WScript.Echo list.Capacity & " : " & list.Count ' → 4 : 1(Capacity は自動拡張されて 4 、Count は 1)
全体的な使用例
'オブジェクトを生成 Dim list Set list = CreateObject("System.Collections.ArrayList") '要素を追加 list.Add "Hello" list.Add "World" list.Add "!" '現在の内容を表示 Dim tmpValue1 tmpValue1 = "" Dim idx For idx = 0 To list.Count - 1 tmpValue1 = tmpValue1 & list(idx) & " " Next WScript.Echo "ArrayList" WScript.Echo " Count: " & list.Count WScript.Echo " Capacity: " & list.Capacity WScript.Echo " Values: " & tmpValue1 'コレクション内の要素を並べ替える list.Sort Dim valueToDisplay valueToDisplay = "" Dim tmpValue2 For Each tmpValue2 In list valueToDisplay = valueToDisplay & tmpValue2 & " " Next WScript.Echo "After sorting:" WScript.Echo " Values: " & valueToDisplay '要素をすべて削除する list.Clear WScript.Echo "After clearing:" WScript.Echo " Count: " & list.Count WScript.Echo " Capacity: " & list.Capacity Set list = Nothing
上記のコードを実行すると、以下の結果が表示される。
ArrayList Count: 3 Capacity: 4 Values: Hello World ! After sorting: Values: ! Hello World After clearing: Count: 0 Capacity: 4