Las colecciones en C# son estructuras de datos que permiten almacenar y manipular grupos de objetos. A diferencia de los arrays, las colecciones proporcionan una mayor flexibilidad y funcionalidad, como la capacidad de redimensionarse automáticamente y métodos avanzados para manipular los datos.

Tipos de Colecciones

C# proporciona varias clases de colecciones en el espacio de nombres System.Collections y System.Collections.Generic. A continuación, se describen algunas de las colecciones más comunes:

  1. List

Una List<T> es una colección genérica que puede almacenar elementos de cualquier tipo especificado. Es similar a un array, pero puede redimensionarse automáticamente.

Ejemplo:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int>();
        numbers.Add(1);
        numbers.Add(2);
        numbers.Add(3);

        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}

Explicación:

  • List<int> numbers = new List<int>(); crea una lista de enteros.
  • numbers.Add(1); agrega el número 1 a la lista.
  • El bucle foreach recorre la lista e imprime cada número.

  1. Dictionary<TKey, TValue>

Un Dictionary<TKey, TValue> es una colección genérica que almacena pares clave-valor. Es útil cuando necesitas acceder a los elementos por una clave única.

Ejemplo:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, int> ages = new Dictionary<string, int>();
        ages["Alice"] = 30;
        ages["Bob"] = 25;

        foreach (var kvp in ages)
        {
            Console.WriteLine($"Name: {kvp.Key}, Age: {kvp.Value}");
        }
    }
}

Explicación:

  • Dictionary<string, int> ages = new Dictionary<string, int>(); crea un diccionario con claves de tipo string y valores de tipo int.
  • ages["Alice"] = 30; agrega una entrada con la clave "Alice" y el valor 30.
  • El bucle foreach recorre el diccionario e imprime cada par clave-valor.

  1. Queue

Una Queue<T> es una colección genérica que sigue el principio FIFO (First In, First Out). Es útil para escenarios donde los elementos deben procesarse en el orden en que se agregan.

Ejemplo:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("First");
        queue.Enqueue("Second");
        queue.Enqueue("Third");

        while (queue.Count > 0)
        {
            Console.WriteLine(queue.Dequeue());
        }
    }
}

Explicación:

  • Queue<string> queue = new Queue<string>(); crea una cola de cadenas.
  • queue.Enqueue("First"); agrega "First" a la cola.
  • El bucle while recorre la cola y elimina e imprime cada elemento en el orden en que fueron agregados.

  1. Stack

Una Stack<T> es una colección genérica que sigue el principio LIFO (Last In, First Out). Es útil para escenarios donde los elementos deben procesarse en el orden inverso al que se agregan.

Ejemplo:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Stack<string> stack = new Stack<string>();
        stack.Push("First");
        stack.Push("Second");
        stack.Push("Third");

        while (stack.Count > 0)
        {
            Console.WriteLine(stack.Pop());
        }
    }
}

Explicación:

  • Stack<string> stack = new Stack<string>(); crea una pila de cadenas.
  • stack.Push("First"); agrega "First" a la pila.
  • El bucle while recorre la pila y elimina e imprime cada elemento en el orden inverso al que fueron agregados.

Ejercicios Prácticos

Ejercicio 1: Uso de List

Crea una lista de nombres de estudiantes y agrega al menos cinco nombres. Luego, imprime todos los nombres en la lista.

Solución:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> students = new List<string> { "Alice", "Bob", "Charlie", "David", "Eve" };

        foreach (string student in students)
        {
            Console.WriteLine(student);
        }
    }
}

Ejercicio 2: Uso de Dictionary<TKey, TValue>

Crea un diccionario para almacenar las edades de diferentes personas. Agrega al menos tres entradas y luego imprime todas las claves y valores.

Solución:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, int> ages = new Dictionary<string, int>
        {
            { "Alice", 30 },
            { "Bob", 25 },
            { "Charlie", 35 }
        };

        foreach (var kvp in ages)
        {
            Console.WriteLine($"Name: {kvp.Key}, Age: {kvp.Value}");
        }
    }
}

Ejercicio 3: Uso de Queue

Crea una cola de tareas pendientes y agrega al menos tres tareas. Luego, procesa e imprime cada tarea en el orden en que fueron agregadas.

Solución:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Queue<string> tasks = new Queue<string>();
        tasks.Enqueue("Task 1");
        tasks.Enqueue("Task 2");
        tasks.Enqueue("Task 3");

        while (tasks.Count > 0)
        {
            Console.WriteLine(tasks.Dequeue());
        }
    }
}

Ejercicio 4: Uso de Stack

Crea una pila de libros y agrega al menos tres títulos. Luego, procesa e imprime cada título en el orden inverso al que fueron agregados.

Solución:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Stack<string> books = new Stack<string>();
        books.Push("Book 1");
        books.Push("Book 2");
        books.Push("Book 3");

        while (books.Count > 0)
        {
            Console.WriteLine(books.Pop());
        }
    }
}

Conclusión

En esta sección, hemos explorado las colecciones en C#, incluyendo List<T>, Dictionary<TKey, TValue>, Queue<T>, y Stack<T>. Estas colecciones proporcionan una forma flexible y eficiente de almacenar y manipular datos. Asegúrate de practicar con los ejercicios proporcionados para reforzar tu comprensión de estos conceptos. En el próximo módulo, profundizaremos en LINQ, una poderosa herramienta para consultar y manipular colecciones de datos.

© Copyright 2024. Todos los derechos reservados