Las listas en C#

Antiguamente ya realice un post sobre arrays y listas en C#, pero en esta serie voy a realizar varios post sobre colecciones y por ello me veo en la obligación de mencionar la lista, con algo más de detalle. 

 

1 - Qué es el tipo List en C#

Cuando trabajamos en C#, uno de los elementos qué más utilizamos es el tipo List<T> ya que nos permite listar elementos, pero no solo eso, sino que además podemos ordenar elementos, filtrar, buscar, etc.

 

Antes de continuar quiero hacer una mención al tipo ArrayList para el que muchos, si venís de otros lenguajes como java, quizá os suenen más. Básicamente ArrayList es el mismo tipo que List<T> pero sin utilizar generics.

 

 

2 - Crear una lista y añadir elementos en C#

Para crear una lista únicamente debemos instanciar dicha lista con new, alternativamente es muy común, estar utilizando otra colección o un array y utilizar el extension method .ToArray().

 

Durante la iniciación, también podemos crear los elementos de dicha lista.

Para añadir elementos, podemos incluirlos de uno en uno utilizando .Add() o si ya tenemos otra lista o un array ya creado, podemos utilizar .AddRange().

//Iniciación, asignando valores
List<string> firstList = new List<string>()
{
    "Opel",
    "BMW"
};

List<string> marcas = new List<string>();
//Añadir un elemento
marcas.Add("Audi");
//Añadir una lista a otra lista
marcas.AddRange(firstList);

 

 

3 - Acceder a los elementos de la lista

Para acceder a los elementos de una lista lo hacemos por index -- a través del indexer

Para ello directamente indicamos el elemento al que acceder. o podemos iterar con un foreach

Console.WriteLine(marcas[0]); //Audi

foreach (string item in marcas)
    Console.WriteLine(item);

 

 

4 - Lista y colecciones en C#

Cuando operamos con una lista esta es completamente mutable lo que quiere decir que podemos añadir elementos, eliminarlos, moverlos, etc. Si en nuestro caso no necesitamos nada de esto yo recomiendo convertir la lista a inmutable ya bien sea convirtiendola a IList<T> o a ReadonlyList<T>.

  • nota: no hay “ninguna” preferencia en cual utilizar, quizá la versión readonly sea más fácil de leer, pero realizan las mismas acciones. El dato interesante es que las colecciones ReadOnly fueron introducidas en .net framework 4.5 e IList<T> ya existía anteriormente. Dicho esto, no son intercambiables, ya que no se implementan entre ellas.
IReadOnlyList<string> readonlyMarcas = marcas;
IList<string> IlistMarcas = marcas;

 

4.1 - Insertar elementos en una lista

Además de el método .Add() y .AddRange podemos insertar elementos utilizando el método .Insert(), el cual, indicando el índice nos permite indicar qué elemento y donde lo vamos a añadir

marcas.Insert(1, "Skoda");

 

4.2 - Eliminar elementos de una lista

Para eliminar elementos de una lista tenemos dos opciones, la primera es eliminar por index utilizando .RemoveAt(index)

Y la segunda es eliminar indicando el elemento a eliminar, utilizando .Remove(T):

marcas.RemoveAt(0); //Elimina Audi
marcas.Remove("Skoda");//Elimina skoda

Finalmente, tenemos otra opción que es .RemoveAll() la cual elimina todos los elementos.

 

4.3 - Más opciones con las listas

La funcionalidad de las listas no acaba ahí, podemos utilizar la propiedad .Count o tenemos gran variedad de métodos, como .Clear() para limpiar la lista, .Find() para encontrar elementos utilizando un predicado o .Sort() para ordenar.

 

 

5 - Qué es SortedList en C#?

Antes de acabar quiero hacer una mención especial a SortedList, siendo sincero podría hacer un post únicamente para este tipo, pero creo que no lo he utilizado nunca en el mundo laboral, asi que con una mención será suficiente. 

 

SortedList nos permite indicar un elemento key, el cual actuará de índice o elemento a comparar y el propio elemento, el tipo se describe SortedList<TKey, TValue>; Y utiliza la interfaz IComparer para comparar los elementos. (haré un post sobre esa interfaz en el futuro).

 

Una vez insertas un elemento, lo ordena automáticamente.

SortedList<int, string> listaCochesOrdenada = new SortedList<int, string>()
{
    {3,"bmw" },
    {1, "audi" },
    {2, "opel" }
};

foreach (var item in listaCochesOrdenada)
    Console.WriteLine(item.Value); //imprime: audi, opel, bmw

 

 

Conclusión

En este post hemos visto cómo crear listas en C#.

Hemos visto cómo insertar elementos en una lista en C#.

Hemos visto cómo eliminar elementos de una lista en C#.

Hemos visto que es el tipo SortedList en C#.


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café