私は、これを行うより速い方法があるかどうか疑問に思っていました:フィールドのコレクションを検索する最速の方法
私はオブジェクトの配列を持っています。新しいオブジェクトが提示されると、そのオブジェクトが配列内にすでに存在するかどうかを(オブジェクト内のフィールドを使用して)調べたいと思います。存在する場合は、フィールドの1つを追加するだけです。存在しない場合は追加してください。
If (myCollection.count <= 0) Then
'collection must be empty, so just add it
Set myObj= New objClass
With myObj
.OBJ_ID = ID
.first_name = first_name
.last_name = last_name
.page_number = pageCounter 'some global variable
End With
myCollection.Add myObj, ID
Else
Dim myObj As objClass
'iterate through collection and see if it already exists
For Each myObj In myCollection
'if it does exists, just append one of the fields
If myObj.OBJ_ID = ID Then
myObj.page_number = myObj.page_number & "," & pageCounter
isFound= True
End If
Next
'if it doesn't exists, add it
If (isFound = False) Then
Set myObj= New objClass
With myObj
.OBJ_ID = ID
.first_name = first_name
.last_name = last_name
.page_number = pageCounter
End With
myCollection.Add myObj
End If
End If
だから、私は与えられたフィールド値を持つオブジェクトは、すでに存在しているかどうかを確認するために、コレクション全体を反復処理されて最適化する必要がある部分を推測:
は、ここに私のコードです。
On Error Resume Next
Set myObj = myCollection(ID)
On Error GoTo 0
If Not myObj Is Nothing Then
myObj.page_number = myObj.page_number & "," & pageCounter
isFound = True
End If
と
おかげ
配列を反復可能なコレクションアイテムを試してみて、設定する高速です'Object'の' Collection'か? – Comintern
オブジェクトの集合です。私の悪い、私はタイトルを編集します – jason