メイン画像

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

アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事