Collections 在VB6中实现了哪些集合?

Collections 在VB6中实现了哪些集合?,collections,vb6,Collections,Vb6,因此,VB6中的集合跟踪每个对象的关键点,您可以通过其关键点查找对象 这是否意味着集合被实现为某种隐藏的哈希表?我意识到在一个集合中可以有多个具有相同键的项,因此可以进行某种排序 有人知道VB6集合应该表示什么类型的数据结构吗?据我所知,VBA集合实现为一个链表(由整数索引和每个…下一个)和一个哈希表(由键使用)。正如Raven所说,不能用同一个键拥有多个项目 编辑: @马克J:我应该为此举个例子: 核心Visual Basic第二版,由Bruce McKinney编写,由Microsoft出版

因此,VB6中的集合跟踪每个对象的关键点,您可以通过其关键点查找对象

这是否意味着集合被实现为某种隐藏的哈希表?我意识到在一个集合中可以有多个具有相同键的项,因此可以进行某种排序


有人知道VB6集合应该表示什么类型的数据结构吗?

据我所知,VBA集合实现为一个链表(由整数索引和每个…下一个)和一个哈希表(由键使用)。正如Raven所说,不能用同一个键拥有多个项目

编辑:

@马克J:我应该为此举个例子: 核心Visual Basic第二版,由Bruce McKinney编写,由Microsoft出版社1997年出版ISBN 1-57231-422-2

引述:

第191页-集合类

简单地说,集合类是CIST类[-]的一个精选的C++版本。事实上,如果你将CIST增强为一个双链表,并给它一些更多的特征(也许使用哈希表来查找字符串键),那么你将有一个集合类,就像使用VisualBasic提供的集合一样。 第197页-性能

“事实上,Visual Basic开发人员告诉我,集合是双链接列表(具有支持索引的附加功能)。”

现在,麦金尼与其说是程序员,不如说是记者,而不是开发人员。然而,他确实为微软工作,并且与VB和VBA团队有联系。他的解释对我有用


顺便说一句,使用双链接列表的原因是为了在集合的开头和结尾都能有效地插入项。

在VB6集合中不能有多个具有相同键的项。您测试过这个吗?明天我将对此进行测试…我原以为添加同一个键不是问题。添加多个没有键的项是可以的,但键在大小写上是唯一的(不考虑选项比较声明)。实际上,您不能在集合中复制键,但您可以在没有键的情况下添加同一对象的多个副本…这很奇怪,因为如果它是在幕后散列对象,那么每次不是都会得到相同的散列吗?我希望我知道语言创建者的意图。那么这是否意味着同时存在一个链表和一个哈希表,包含对相同项对象的引用?根据您对其进行迭代的方式,is会根据需要使用不同的数据结构?Mark描述了您访问集合的代码接口。我们只能推断引擎盖下一定有支持功能的东西。我们可以推测它可能会使用链表和哈希表,但我们不知道。@MarkJ:我希望有人能给我指出一个资源,以消除对实现的猜测。@Tom t:我知道,我的观点是这个答案不起作用。谢谢更新!我想这基本上回答了我的问题。