Implementación de listas en C#

En C#, List es una colección genérica que se utiliza para almacenar elementos u objetos en forma de lista y se define en el espacio de nombres System.Collection.Generic . Proporciona la misma funcionalidad que ArrayList , pero solo hay una diferencia, es decir, una lista es genérica mientras que ArrayList es una colección no genérica. Es de naturaleza dinámica, lo que significa que el tamaño de la lista crece, según la necesidad.

Puntos importantes:

  • La clase List implementa la interfaz ICollection<T>, IEnumerable<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection, IEnumerable e IList.
  • Puede aceptar nulo como un valor válido para los tipos de referencia y también permite elementos duplicados.
  • Si Count se vuelve igual a Capacity, entonces la capacidad de List aumentó automáticamente al reasignar el arreglo interno. Los elementos existentes se copiarán en la nueva array antes de agregar el nuevo elemento.
  • Los elementos presentes en la lista no se ordenan de forma predeterminada y se accede a los elementos mediante un índice de base cero.

¿Cómo crear una Lista?

Una clase List tiene 3 constructores que se utilizan para crear una lista y los constructores son los siguientes:  

  • List<T>(): este constructor se usa para crear una instancia de la clase List<T> que está vacía y tiene la capacidad inicial predeterminada.
  • List<T>(IEnumerable): este constructor se usa para crear una instancia de la clase List<T> que contiene elementos copiados de la colección especificada y tiene capacidad suficiente para acomodar la cantidad de elementos copiados.
  • List<T>(Int32): este constructor se usa para crear una instancia de la clase List<T> que está vacía y tiene la capacidad inicial especificada.

Veamos cómo crear una lista usando el constructor List<T>() :

Paso 1: Incluya el espacio de nombres System.Collection.Generics en su programa con la ayuda del uso de palabras clave. 

using System.Collections.Generic;

Paso 2: Cree una lista usando la clase List<T> como se muestra a continuación: 

List list_name = new List(); 

Paso 3: si desea agregar elementos en su lista, la clase List<T> proporciona dos métodos diferentes y los métodos son: 

  • Add(T) : este método se usa para agregar un objeto al final de List<T>. 
  • AddRange(IEnumerable<T>) : este método se usa para agregar los elementos de la colección especificada al final de List<T>.

Nota: También puede agregar elementos usando inicializadores de colección. Como se muestra a continuación ejemplo:

Ejemplo: 

// Creando una lista usando la clase List 
// y agregando elementos usando los 
// inicializadores de la colección 
List<string> my_list1 = new List<string>() { “geeks”, “Geek123”, “GeeksforGeeks” }; 
 

Paso 4: Puede acceder a los elementos de la lista utilizando las siguientes formas: 

  • Usando el bucle foreach: Puede usar el bucle foreach para acceder a los elementos/objetos de la Lista.
    Ejemplo:

// Accediendo a elementos de my_list 
// Usando foreach loop 
foreach(int a in my_list) 

Console.WriteLine(a); 

 

  • Uso del método ForEach(): este método se usa para realizar la acción especificada en cada elemento de List<T> .
    Ejemplo:

// Accediendo a elementos de my_list 
// Usando el método 
ForEach my_list.ForEach(a = > Console.WriteLine(a)); 
 

  • Usando for loop: Puede usar for loop para acceder a los elementos/objetos de la Lista.
    Ejemplo:

// Accediendo a elementos de my_list 
// Usando for loop 
for (int a = 0; a < my_list.Count; a++) 

Console.WriteLine(my_list[a]); 

 

  • Uso de indexadores: Puede usar indexadores para acceder a los elementos/objetos de la Lista.
    Ejemplo:

// Acceso a elementos de my_list 
// Uso de indexadores 
Console.WriteLine(my_list[3]); 
Console.WriteLine(mi_lista[4]); 
 

Ejemplo: 

C#

// C# program to illustrate how
// to create a list
using System;
using System.Collections.Generic;
 
class GFG {
 
    // Main Method
    static public void Main()
    {
 
        // Creating list using List class
        // and List<T>() Constructor
        List<int> my_list = new List<int>();
 
        // Adding elements to List
        // Using Add() method
        my_list.Add(1);
        my_list.Add(10);
        my_list.Add(100);
        my_list.Add(1000);
        my_list.Add(10000);
        my_list.Add(100000);
        my_list.Add(1000000);
 
        // Accessing elements of my_list
        // Using foreach loop
        foreach(int a in my_list)
        {
            Console.WriteLine(a);
        }
    }
}
Producción: 

1
10
100
1000
10000
100000
1000000

 

¿Cómo eliminar elementos de la Lista?

Puede eliminar los elementos de la lista utilizando los siguientes métodos proporcionados por la clase List<T>:

  • Eliminar (T) : este método se utiliza para eliminar la primera aparición de un objeto específico de la lista.
  • RemoveAll(Predicate<T>) : este método se usa para eliminar todos los elementos que coinciden con las condiciones definidas por el predicado especificado.
  • RemoveAt(Int32) : Este método se utiliza para eliminar el elemento en el índice especificado de la Lista.
  • RemoveRange(Int32, Int32) : este método se utiliza para eliminar un rango de elementos de List<T>.
  • Clear() : este método se utiliza para eliminar todos los elementos de List<T>.

Ejemplo:

C#

// C# program to illustrate how
// to remove objects from the list
using System;
using System.Collections.Generic;
 
class GFG {
 
    // Main Method
    static public void Main()
    {
 
        // Creating list using List class
        // and List<T>() Constructor
        List<int> my_list = new List<int>();
 
        // Adding elements to List
        // Using Add() method
        my_list.Add(1);
        my_list.Add(10);
        my_list.Add(100);
        my_list.Add(1000);
        my_list.Add(10000);
        my_list.Add(100000);
        my_list.Add(1000000);
        my_list.Add(10000000);
        my_list.Add(100000000);
 
        // Initial count
        Console.WriteLine("Initial count:{0}", my_list.Count);
 
        // After using Remove() method
        my_list.Remove(10);
        Console.WriteLine("2nd count:{0}", my_list.Count);
 
        // After using RemoveAt() method
        my_list.RemoveAt(4);
        Console.WriteLine("3rd count:{0}", my_list.Count);
 
        // After using RemoveRange() method
        my_list.RemoveRange(0, 2);
        Console.WriteLine("4th count:{0}", my_list.Count);
 
        // After using Clear() method
        my_list.Clear();
        Console.WriteLine("5th count:{0}", my_list.Count);
    }
}
Producción: 

Initial count:9
2nd count:8
3rd count:7
4th count:5
5th count:0

 

¿Cómo ordenar la lista?

Puede ordenar los elementos utilizando el método Sort(). Este método se usa para ordenar los elementos o una parte de los elementos en List<T> mediante la implementación de IComparer<T> predeterminada o especificada o un delegado de Comparison<T> proporcionado para comparar los elementos de la lista.

Ejemplo: 

C#

// C# program to illustrate how
// sort a list
using System;
using System.Collections.Generic;
 
class GFG {
 
    // Main Method
    static public void Main()
    {
 
        // Creating list using List class
        // and List<T>() Constructor
        List<int> my_list = new List<int>();
 
        // Adding elements to List
        // Using Add() method
        my_list.Add(496);
        my_list.Add(1000);
        my_list.Add(100);
        my_list.Add(10);
        my_list.Add(10000);
        my_list.Add(10000000);
        my_list.Add(1000000);
        my_list.Add(100000);
        my_list.Add(0000);
 
        // Without sorted List
        Console.WriteLine("UnSorted List:");
        foreach(int a in my_list)
        {
            Console.WriteLine(a);
        }
 
        // After Sort method
        my_list.Sort();
        Console.WriteLine("Sorted List:");
        foreach(int a in my_list)
        {
            Console.WriteLine(a);
        }
    }
}
Producción: 

UnSorted List:
496
1000
100
10
10000
10000000
1000000
100000
0
Sorted List:
0
10
100
496
1000
10000
100000
1000000
10000000

 

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 *