我在 VBA 中有一个包含多个元素的集合,这些元素中的每一个都有一个分配的键。
我想知道给定元素在集合中使用其键的位置。我能想到的唯一方法是在集合中循环,直到我得到我想要的项目,有没有更快的方法?
谢谢
基本上,没有。没有更快的方法。至少不使用集合。这是我所知道的在集合中查找项目索引的最快方法。
' returns index of item if found, returns 0 if not found
Public Function IndexOf(ByVal coll As Collection, ByVal item As Variant) As Long
Dim i As Long
For i = 1 To coll.Count
If coll(i) = item Then
IndexOf = i
Exit Function
End If
Next
End Function
Run Code Online (Sandbox Code Playgroud)
请注意,我们在找到第一个匹配项后立即退出该函数。该算法具有O(n)的平均和最坏情况,其中n是集合中的项目数。
我认为您希望能够找到索引可能还有另一个原因,因此我建议您也查看一下Scripting.DictionaryMicrosoft Scripting Runtime 库中的 。同时,也无法通过键值(循环除外)获取项的索引,您实际上可以从字典中检索键值,而不仅仅是项。我怀疑您可能会问这个问题,因为内置Collection对象中缺乏这种能力。
| 归档时间: |
|
| 查看次数: |
23115 次 |
| 最近记录: |