Compartir a través de


Colecciones como alternativa a las matrices

Actualización: noviembre 2007

Aunque las colecciones se suelen utilizar para trabajar con Object (Tipo de datos), también se pueden usar para trabajar con cualquier tipo de datos. En algunas circunstancias, puede resultar más eficaz almacenar elementos en una colección que en una matriz.

Si necesita cambiar el tamaño de una matriz, debe utilizar Instrucción ReDim (Visual Basic). Si hace esto, Visual Basic crea una nueva matriz y libera la matriz anterior para su disposición. Esto requiere tiempo de ejecución. Por consiguiente, si el número de elementos con los que trabaja cambia a menudo o no puede predecir el número máximo de elementos que necesita, puede obtener un mejor rendimiento utilizando una colección.

Una colección, que no tiene que crear un nuevo objeto o copiar elementos existentes, puede controlar el cambio de tamaño en un tiempo de ejecución menor que una matriz, que tiene que utilizar ReDim. Pero si el tamaño no cambia, o sólo cambia raramente, es probable que una matriz sea más eficaz. Como siempre, el rendimiento depende en gran medida de la aplicación individual. Suele merecer la pena probar una matriz y una colección.

Colecciones especializadas

.NET Framework también proporciona una variedad de clases, interfaces y estructuras para colecciones generales y especiales. Los espacios de nombres System.Collections y System.Collections.Specialized contienen las definiciones e implementaciones que incluyen diccionarios, listas, colas y pilas. El espacio de nombres System.Collections.Generic proporciona muchos de ellos en versiones genéricas que adoptan uno o más argumentos de tipos.

Si su colección es para contener elementos de sólo un tipo de datos concreto, una colección genérica tiene la ventaja de forzar la seguridad de tipos. Para obtener más información sobre genéricos, consulte Tipos genéricos en Visual Basic.

Ejemplo

Descripción

El ejemplo siguiente utiliza la clase genérica System.Collections.Generic.List<T> de .NET Framework para crear una colección de listas de estructuras customer.

Código

' Define the structure for a customer.
Public Structure customer
    Public name As String
    ' Insert code for other members of customer structure.
End Structure
' Create a module-level collection that can hold 200 elements.
Public custFile As New List(Of customer)(200) 
' Add a specified customer to the collection.
Private Sub addNewCustomer(ByVal newCust As customer)
    ' Insert code to perform validity check on newCust.
    custFile.Add(newCust)
End Sub
' Display the list of customers in the Debug window.
Private Sub printCustomers()
    For Each cust As customer In custFile
        Debug.WriteLine(cust)
    Next cust
End Sub

Comentarios

La declaración de la colección custFile especifica que sólo puede contener elementos de tipo customer. También proporciona una capacidad inicial de 200 elementos. El procedimiento addNewCustomer comprueba la validez del nuevo elemento y, a continuación, lo agrega a la colección. El procedimiento printCustomers utiliza un bucle For Each para recorrer la colección y mostrar sus elementos.

Vea también

Tareas

Cómo: Declarar una variable de matriz

Cómo: Crear una matriz

Cómo: Inicializar una variable de matriz

Solucionar problemas de matrices

Conceptos

Colecciones en Visual Basic

Tipos genéricos en Visual Basic

Referencia

Instrucción ReDim (Visual Basic)

Otros recursos

Matrices en Visual Basic