Eine Sammlung in VB6 verfolgt also einen Schlüssel für jedes Objekt, und Sie können das Objekt mit seinem Schlüssel nachschlagen.
Heißt das, Sammlungen werden als irgendeine Art von Hashtable unter der Haube implementiert? Mir ist klar, dass Sie mehrere Artikel mit demselben Schlüssel in einer Sammlung haben können, daher auch SOME SORT.
Weiß jemand, welche Art Datenstruktur eine VB6-Sammlung darstellen soll?
Soweit ich weiß, ist die VBA-Sammlung als eine verknüpfte Liste (die von Integer-Indizes und For Each ... Next verwendet wird) und eine Hash-Tabelle (die von Schlüsseln verwendet wird) implementiert. Und wie Raven sagte, können Sie nicht mehrere Gegenstände mit demselben Schlüssel haben.
Bearbeitet:
@MarkJ: Ich hätte meine Angabe dafür geben sollen: Hardcore Visual Basic 2nd Ed. von Bruce McKinney, veröffentlicht von Microsoft Press 1997 ISBN 1-57231-422-2
Zitate:
Seite 191 - Die Sammelklasse
"Um es einfach auszudrücken, die Collection-Klasse ist eine aufgemotzt C ++ - Version der CList-Klasse [...]. In der Tat, wenn Sie CList zu einer doppelt verknüpften Liste erweitern und geben Sie ein paar mehr Funktionen ( und vielleicht verwenden Sie eine Hash-Tabelle, um Schlüssel nachzuschlagen. Sie haben eine Collection-Klasse, die der von Visual Basic ähnelt. "
Seite 197 - Leistung
"Und in der Tat wurde mir von Visual Basic-Entwicklern gesagt, dass Sammlungen doppelt verknüpfte Listen sind (mit zusätzlichen Funktionen zur Indexierung)."
McKinney war jetzt eher ein Journalist als ein Programmierer und kein Entwickler. Er arbeitete jedoch für Microsoft und hat Kontakte in den VB- und VBA-Teams. Seine Erklärung funktioniert für mich.
Der Grund für die doppelt verknüpfte Liste besteht übrigens darin, dass es effizient ist, Elemente am Anfang und am Ende der Sammlung einzufügen.
Tags und Links vb6 collections