Colecciones en C#

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.Genericnombres. 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.Genericnombres:

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);
        }
    }
}
Producción:

15
18
21
24
27

Clases System.Collections

La colección no genérica en C# se define en el espacio de System.Collectionsnombres. 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.Collectionsnombres:

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());
    }
}
Producción:

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.Specializednombres.

System.Collections.Concurrent

Entró .NET Framework Version 4y 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.Collectionsy 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *