2010-03-30 49 views
8

Por lo tanto, una colección en VB6 realiza un seguimiento de una clave para cada objeto, y puede buscar el objeto por su clave.¿Qué son las colecciones implementadas como en VB6?

¿Eso significa que las colecciones se implementan como una especie de hashtable bajo el capó? Me doy cuenta de que puede tener varios elementos con la misma clave en una colección, de ahí el SORT ALGUNO.

¿Alguien sabe qué tipo de estructura de datos se supone que representa una colección VB6?

+5

** No ** puede ** tener varios elementos con la misma clave en una Colección VB6. – raven

+0

¿Has probado esto? Voy a probar esta mañana ... Pensé que agregar la misma clave no era un problema. –

+1

Agregar elementos múltiples con la tecla NO es correcto, pero las claves son insensiblemente únicas (independientemente de la declaración de Option Compare). –

Respuesta

7

Hasta donde yo sé, VBA Collection se implementa como una lista vinculada (utilizada por los índices enteros y For Each ... Next) y una tabla hash (utilizada por las teclas). Y como dijo Raven, no puedes tener múltiples elementos con la misma llave.

Editado:

@MarkJ: Debería haber dado mi citar para ello: Hardcore Visual Basic 2ª Ed. por Bruce McKinney, publicado por Microsoft Press 1997 ISBN 1-57231-422-2

Cotizaciones:

Página 191 - la clase de colección

"En pocas palabras, la clase de colección es una souped- hasta la versión C++ de la clase CList [...]. De hecho, si mejora CList para que sea una lista doblemente enlazada y le dé algunas características más (y tal vez use una tabla hash para buscar las claves de cadena), tendrá tener una clase de colección muy parecida a la proporcionada con Visual Basic ".

Página 197 - Rendimiento

"Y, como cuestión de hecho, me han dicho por los desarrolladores de Visual Basic que se Colecciones lista doblemente enlazada (con características adicionales para apoyar la indexación)."

Ahora, McKinney era más un periodista que un programador, y no un desarrollador. Sin embargo, trabajó para Microsoft y tiene contactos en los equipos de VB y VBA. Su explicación funciona para mí.

Dicho sea de paso, el motivo de la lista de enlaces dobles es hacer que sea eficiente insertar elementos tanto al principio como al final de la colección.

+0

¿Significa eso que hay una lista vinculada Y una tabla hash contigua una al lado de la otra, con referencias a los mismos objetos del elemento? Y dependiendo de cómo lo itere, ¿utiliza las diferentes estructuras de datos según sea necesario? –

+0

Mark está describiendo la interfaz de código a través de la cual accede a una Colección. Solo podemos deducir que bajo el capó debe ser algo que respalde la funcionalidad. Podemos especular que podría usar una lista vinculada y una tabla hash, pero no lo sabemos. – MarkJ

+0

@MarkJ: Esperaba que alguien pudiera indicarme un recurso que aclararía las especulaciones sobre la implementación. –

Cuestiones relacionadas