Una Lista es una colección genérica que implementa un array con tamaño dinámico. Es una de las estructuras de datos que usaréis con más frecuencia utilizadas.
A diferencia de los arrays, las listas permiten la manipulación dinámica de sus elementos (es decir, que podemos añadir y eliminar elementos, definir un tamaño fijo al inicio).
La clase List<T>
en el espacio de nombres System.Collections.Generic
permite crear listas de cualquier tipo especificado por el parámetro de tipo T
.
Si quieres aprender más sobre Arrays dinámicos
consulta el Curso de Introducción a la Programación leer más
Declaración de listas
Para declarar una lista en C#, se utiliza la siguiente sintaxis:
List<tipo> nombreLista;
Por ejemplo, para declarar una lista de enteros:
List<int> numeros;
Creación de la lista
Una vez declarada la lista, antes de poder usarla debemos inicializarla. Para ello debemos crear una nueva Lista, y asignarla a la variable que hemos declarado anteriormente.
O, alternativamente, podemos hacerlo en el mismo momento en que declaramos nuestra Lista. Asi:
List<int> numeros = new List<int>();
// equivalente
var numeros = new List<int>();
List<int> numeros = new ();
Inicialización de listas
Alternativamente, queremos inicializar la lista a una serie de valores conocidos en tiempo de compilación, podemos hacerlo usando el inicializador semántico []
.
// sintaxis recomendada
List<int> numeros = [ 1, 2, 3, 4, 5 ];
// equivalente a esto
List<int> numeros = new () { 1, 2, 3, 4, 5 };
List<int> numeros = new List<int>() { 1, 2, 3, 4, 5 };
Anteriormente había otras formas
Uso básico de lista
Acceder a elementos de una lista
Los elementos de una lista se pueden acceder mediante índices, comenzando desde 0:
List<int> numeros = new List<int>();
int primerNumero = numeros[0]; // primerNumero será 1
Modificar elementos de una lista
Los elementos de una lista se pueden modificar asignando nuevos valores a los índices específicos:
numeros[1] = 20; // El segundo elemento de la lista ahora será 20
Añadir elementos a una lista
Para añadir elementos a una lista, se utiliza el método Add
:
numeros.Add(1);
Además, podemos agregar múltiples elementos a la vez utilizando el método AddRange()
:
lista.AddRange(coleccion);
Donde coleccion
representa una colección de elementos del mismo tipo que la lista.
Eliminar elementos de una lista
Para eliminar un elemento de una lista, podemos utilizar el método Remove()
:
numeros.Remove(20); // Elimina el primer elemento con el valor 20
También es posible eliminar un elemento en función de su índice utilizando el método RemoveAt()
:
numeros.RemoveAt(0); // Elimina el primer elemento
Limpiar toda la lista
numeros.Clear(); // Elimina todos los elementos de la lista
Insertar elementos en una posición específica
Para insertar un elemento en una posición específica de la lista, se utiliza el método Insert
:
numeros.Insert(1, 15); // Inserta el número 15 en la posición 1
Propiedades y métodos útiles de List<T>
Las listas en C# ofrecen una amplia gama de operaciones que nos permiten manipular y acceder a sus elementos de manera eficiente. Vamos a ver algunas de ellas:
Propiedad Count
La propiedad Count
devuelve el número de elementos en la lista:
int cantidad = numeros.Count; // cantidad será el número de elementos en la lista
Método Contains
El método Contains
verifica si un valor específico está presente en la lista:
bool contiene = numeros.Contains(3); // contiene será true si el número 3 está en la lista
Método IndexOf
El método IndexOf
devuelve el índice de la primera aparición de un valor específico en la lista:
int indice = numeros.IndexOf(3); // indice será la posición del número 3 en la lista
Método Sort
El método Sort
ordena los elementos de la lista:
numeros.Sort(); // Ordena los elementos en orden ascendente
Método Reverse
El método Reverse
invierte el orden de los elementos en la lista:
numeros.Reverse(); // Invierte el orden de los elementos en la lista
Ejemplos prácticos
Calcular la suma de los elementos de una lista
En este ejemplo, se utiliza un bucle foreach
para calcular la suma de los elementos en una lista.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 }; // Declaramos la lista con los números
int suma = 0; // Variable para almacenar la suma de los elementos
foreach (int numero in numeros)
{
suma += numero; // Suma cada elemento de la lista a 'suma'
}
Console.WriteLine($"La suma de los elementos es: {suma}");
Filtrar elementos de una lista
En este ejemplo, se utiliza el método FindAll
para filtrar los elementos pares de una lista.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 }; // Declaramos la lista con los números
List<int> numerosPares = numeros.FindAll(numero => numero % 2 == 0); // Filtra los números pares
Console.WriteLine("Números pares:");
foreach (int numero in numerosPares)
{
Console.WriteLine(numero); // Imprime cada número par
}
Encontrar el valor máximo en una lista
En este ejemplo, se utiliza el método Max
para encontrar el valor máximo en una lista.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 }; // Declaramos la lista con los números
int maximo = numeros.Max(); // Encuentra el valor máximo
Console.WriteLine($"El valor máximo es: {maximo}");
Ordenar los elementos de una lista
En este ejemplo, se utiliza el método Sort
para ordenar los elementos de una lista en orden ascendente.
List<int> numeros = new List<int> { 5, 3, 1, 4, 2 }; // Declaramos la lista con los números desordenados
numeros.Sort(); // Ordena la lista en orden ascendente
Console.WriteLine("Números ordenados:");
foreach (int numero in numeros)
{
Console.WriteLine(numero); // Imprime cada número en orden
}
Contar cuántos elementos cumplen una condición
En este ejemplo, se utiliza el método Count
para contar cuántos elementos en una lista son mayores que un valor específico.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 }; // Declaramos la lista con los números
int contador = numeros.Count(numero => numero > 3); // Cuenta los elementos mayores que 3
Console.WriteLine($"Hay {contador} elementos mayores que 3");
Eliminar elementos de una lista
En este ejemplo, se utiliza el método RemoveAll
para eliminar todos los elementos impares de una lista.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 }; // Declaramos la lista con los números
numeros.RemoveAll(numero => numero % 2 != 0); // Elimina todos los números impares
Console.WriteLine("Números restantes:");
foreach (int numero in numeros)
{
Console.WriteLine(numero); // Imprime los números restantes
}