VBScript - .NET Framework の ArrayList クラスを使う
VBScript - .NET Framework の ArrayList クラスを使う
VBScript から .NET Framework の ArrayList クラスを使うことができる。
サイズが動的に拡大されるので、配列を使うより便利だ。
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
コレクション内の要素を並べ替える
Sort メソッドでコレクション内の要素の並べ替えができる。
(クイックソートアルゴリズムが使われる)
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
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。
この記事にコメントをしてみませんか?