对于整数键,索引的速度是O(N),所以它看起来像一个列表。但显然(wqw 在Unable to proper loop through keys AND values in a VB6 For Each 循环中的评论)字符串键的访问时间是O(log(N))......也许它是建立在单链表之上的树(索引列表元素)?
我努力获取有关此的文档,但我能找到的只是如何使用,而Collection不是它的数据模型。
对于整数键,索引的速度是O(N),所以它看起来像一个列表。但显然(wqw 在Unable to proper loop through keys AND values in a VB6 For Each 循环中的评论)字符串键的访问时间是O(log(N))......也许它是建立在单链表之上的树(索引列表元素)?
我努力获取有关此的文档,但我能找到的只是如何使用,而Collection不是它的数据模型。
我怀疑你会发现很多关于 VBA.Collection 的实现细节的东西。(官方使用参考https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/collection-object)
一般建议是考虑改用 VBScript Dictionary 对象;如果您需要访问密钥,当然可以使用它。据此,字典在一定程度上也更快:https ://fastexcel.wordpress.com/2012/07/10/comparing-two-lists-vba-udf-shootout-between-linear-search-binary-search -收藏和字典/
我自己做的另一个选择是使用 .NET Hashtable(引用 mscorlib.dll)。我没有针对 VBScript Dictionary 进行任何性能测试,所以如果值得付出努力,我就不做(但实现起来很有趣)。一个例子是无法在 VBA (Excel) 中迭代哈希表。