Las colecciones estandarizan la forma en que su programa maneja los objetos. En otras palabras, contiene un conjunto de clases para contener elementos de manera generalizada. Con la ayuda de las colecciones, el usuario puede realizar varias operaciones en objetos como almacenar, actualizar, eliminar, recuperar, buscar, ordenar, etc.
C# divide la colección en varias clases, algunas de las clases comunes se muestran a continuación:
System.Collections.Clases genéricas
La colección genérica en C# se define en el espacio de System.Collection.Generic
nombres. Proporciona una implementación genérica de la estructura de datos estándar, como listas vinculadas, pilas, colas y diccionarios. Estas colecciones son de tipo seguro porque son genéricas, lo que significa que solo aquellos elementos que son compatibles con el tipo de la colección se pueden almacenar en una colección genérica, lo que elimina las discrepancias accidentales de tipos. Las colecciones genéricas están definidas por el conjunto de interfaces y clases. La siguiente tabla contiene las clases de uso frecuente del espacio de System.Collections.Generic
nombres:
Nombre de la clase | Descripción |
---|---|
Diccionario<Tclave,TValor> | Almacena pares clave/valor y proporciona una funcionalidad similar a la que se encuentra en la clase Hashtable no genérica. |
Lista<T> | Es una array dinámica que proporciona una funcionalidad similar a la que se encuentra en la clase ArrayList no genérica. |
Cola<T> | Una lista de primeros en entrar, primeros en salir y proporciona una funcionalidad similar a la que se encuentra en la clase de cola no genérica. |
ListaOrdenada<TKey,TValue> | Es una lista ordenada de pares clave/valor y proporciona una funcionalidad similar a la que se encuentra en la clase SortedList no genérica. |
Pila<T> | Es una lista de primeros en entrar, últimos en salir y proporciona una funcionalidad similar a la que se encuentra en la clase Stack no genérica. |
HashSet<T> | Es una colección desordenada de los elementos únicos. Evita que se inserten duplicados en la colección. |
Lista Vinculada<T> | Permite la rápida inserción y extracción de elementos. Implementa una lista enlazada clásica. |
Ejemplo:
// C# program to illustrate the concept // of generic collection using List<T> using System; using System.Collections.Generic; class Geeks { // Main Method public static void Main(String[] args) { // Creating a List of integers List<int> mylist = new List<int>(); // adding items in mylist for (int j = 5; j < 10; j++) { mylist.Add(j * 3); } // Displaying items of mylist // by using foreach loop foreach(int items in mylist) { Console.WriteLine(items); } } }
15 18 21 24 27
Clases System.Collections
La colección no genérica en C# se define en el espacio de System.Collections
nombres. Es una estructura de datos de propósito general que funciona con referencias a objetos, por lo que puede manejar cualquier tipo de objeto, pero no de forma segura. Las colecciones no genéricas están definidas por el conjunto de interfaces y clases. La siguiente tabla contiene las clases de uso frecuente del espacio de System.Collections
nombres:
Nombre de la clase | Descripción |
---|---|
Lista de arreglo | Es una array dinámica, lo que significa que el tamaño de la array no es fijo, puede aumentar y disminuir en tiempo de ejecución. |
Tabla de picadillo | Representa una colección de pares de clave y valor que se organizan en función del código hash de la clave. |
Cola | Representa una colección de objetos primero en entrar, primero en salir. Se utiliza cuando necesita un acceso de elementos por orden de entrada. |
Pila | Es una estructura de datos lineal. Sigue el patrón LIFO (último en entrar, primero en salir) para entrada/salida. |
Ejemplo:
// C# to illustrate the concept // of non-generic collection using Queue using System; using System.Collections; class GFG { // Driver code public static void Main() { // Creating a Queue Queue myQueue = new Queue(); // Inserting the elements into the Queue myQueue.Enqueue("C#"); myQueue.Enqueue("PHP"); myQueue.Enqueue("Perl"); myQueue.Enqueue("Java"); myQueue.Enqueue("C"); // Displaying the count of elements // contained in the Queue Console.Write("Total number of elements present in the Queue are: "); Console.WriteLine(myQueue.Count); // Displaying the beginning element of Queue Console.WriteLine("Beginning Item is: " + myQueue.Peek()); } }
Total number of elements present in the Queue are: 5 Beginning Item is: C#
Nota: C# también proporciona una colección especializada que está optimizada para trabajar en un tipo específico de tipo de datos y la colección especializada se encuentra en el espacio de System.Collections.Specialized
nombres.
System.Collections.Concurrent
Entró .NET Framework Version 4
y siguió. Proporciona varias clases de colección seguras para subprocesos que se usan en lugar de los tipos correspondientes en los espacios de nombres System.Collections
y System.Collections.Generic
, cuando varios subprocesos acceden a la colección simultáneamente. Las clases presentes en esta colección son:
Nombre de la clase | Descripción |
---|---|
BlockingCollection | Proporciona capacidades de bloqueo y delimitación para colecciones seguras para subprocesos que implementan IProducerConsumerCollection. |
ConcurrentBag | Representa una colección desordenada de objetos segura para subprocesos. |
Diccionario concurrente | Representa una colección segura para subprocesos de pares clave/valor a la que se puede acceder mediante varios subprocesos al mismo tiempo. |
Cola simultánea | Representa una colección FIFO (primero en entrar, primero en salir) segura para subprocesos. |
pila concurrente | Representa una colección LIFO (last in-first out) segura para subprocesos. |
OrderablePartitioner | Representa una manera particular de dividir una fuente de datos ordenable en múltiples particiones. |
particionador | Proporciona estrategias de partición comunes para arrays, listas y enumerables. |
particionador | Representa una forma particular de dividir una fuente de datos en múltiples particiones. |
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA