在VB6中,集合为每个对象跟踪一个键,并且可以通过其键查找该对象。 这是否意味着集合在内部实现时是一种哈希表?我知道可以在集合中具有相同键的多个项,因此是某种哈希表。 有人知道VB6集合应该代表哪种类型的数据结构吗?
据我所知,VBA Collection实现为一个链表(由整数索引和For Each...Next使用)和一个哈希表(由键使用)。正如Raven所说,您不能具有相同键的多个项。编辑:@MarkJ:我应该给出我的引用:《Hardcore Visual Basic 2nd Ed.》,作者Bruce McKinney,由Microsoft Press于1997年出版,ISBN 1-57231-422-2引用:第191页 - 集合类“简单地说,集合类是一个升级版的C++版本的CList类[...]。实际上,如果将CList增强为双向链表并赋予其更多功能(并且可能使用哈希表来查找字符串键),则会拥有与提供的Visual Basic类似的集合类。”第197页 - 性能“事实上,我被Visual Basic开发人员告知Collections是双向链表(具有支持索引的其他功能)。 ”现在,McKinney更像是记者而不是程序员,也不是开发人员。但是,他确实为Microsoft工作,并且在VB和VBA团队中有联系。他的解释对我有效。顺便提一下,双向链表之所以高效,是因为它可以在集合的开头和末尾同时插入项。