Compartir a través de


Seleccionar una clase de colección

Es importante elegir cuidadosamente la clase System.Collections. La utilización de un tipo equivocado podría limitar el uso de la colección.

Considere las siguientes cuestiones:

  • ¿Necesita una lista secuencial en la que normalmente se descarta el elemento tras recuperar su valor?

    • Si la respuesta es sí, considere la posibilidad de utilizar la clase Queue o la clase genérica Queue en caso de que necesite un comportamiento de tipo FIFO ("primero en entrar, primero en salir"). Considere la posibilidad de utilizar la clase Stack o la clase genérica Stack en caso de que necesite un comportamiento de tipo LIFO ("último en entrar, primero en salir").

    • Si la respuesta es no, considere el uso de las demás colecciones.

  • ¿Necesita obtener acceso a los elementos en cierto orden, como FIFO, LIFO o aleatoriamente?

    • La clase Queue y la clase genérica Queue proporcionan un acceso de tipo FIFO.

    • La clase Stack y la clase genérica Stack proporcionan un acceso de tipo LIFO.

    • La clase genérica LinkedList permite un acceso secuencial, tanto desde el encabezado hasta el final como desde el final hasta el encabezado.

    • El resto de las colecciones ofrecen acceso aleatorio.

  • ¿Necesita tener acceso a cada elemento por el índice?

  • ¿Cada elemento contendrá un valor, una combinación de una clave y un valor, o una combinación de una clave y varios valores?

    • Un valor: utilice cualquiera de las colecciones basadas en la interfaz IList o en la interfaz genérica IList.

    • Una clave y un valor: utilice cualquiera de las colecciones basadas en la interfaz IDictionary o en la interfaz genérica IDictionary.

    • Un valor con clave incrustada: utilice la clase genérica KeyedCollection.

    • Una clave y varios valores: utilice la clase NameValueCollection.

  • ¿Necesita ordenar los elementos de forma diferente a como se introdujeron?

    • La clase Hashtable ordena sus elementos en función de los códigos hash de dichos elementos.

    • La clase SortedList y las clases genéricas SortedDictionary y SortedList ordenan sus elementos en función de la clave, conforme a las implementaciones de la interfaz IComparer y de la interfaz genérica IComparer.

    • ArrayList proporciona un método Sort que toma como parámetro una implementación de IComparer. Su equivalente genérico, es decir, la clase genérica List, proporciona un método Sort que toma como parámetro una implementación de la interfaz genérica IComparer.

  • ¿Necesita buscar y recuperar la información rápidamente?

    • ListDictionary ofrece más rapidez que Hashtable en colecciones pequeñas (de un máximo de 10 elementos). La clase genérica SortedDictionary proporciona una búsqueda más rápida que la clase genérica Dictionary.
  • ¿Necesita colecciones que acepten sólo cadenas?

    • StringCollection (basada en IList) y StringDictionary (basada en IDictionary) están en el espacio de nombres System.Collections.Specialized.

    • Además, puede utilizar cualquiera de las clases de colección genéricas del espacio de nombres System.Collections.Generic como colecciones de cadenas con establecimiento inflexible de tipos; para ello, tiene que especificar la clase String para sus argumentos de tipo genérico.

Vea también

Referencia

System.Collections
System.Collections.Specialized
System.Collections.Generic

Otros recursos

Crear y manipular colecciones