Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende ¿Qué Son las Listas? | Estructuras de Datos y Manejo de Archivos
C# Más Allá de lo Básico

book¿Qué Son las Listas?

Imagina que tenemos una situación en la que queremos almacenar los nombres de todos los estudiantes que están tomando un determinado curso. La primera solución que se nos ocurre es crear un Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Sin embargo, si en algún momento hay más de 50 estudiantes, no podremos almacenar sus nombres. De manera similar, en una situación donde haya menos de 50 estudiantes, los espacios no ocupados en el arreglo serán un desperdicio de memoria; esto se convierte en un problema especialmente en arreglos grandes.

Aquí necesitamos una nueva estructura que pueda almacenar una cantidad variable de elementos. Afortunadamente, ya existe una estructura así, llamada Lista.

Las Listas son muy similares a los Arreglos, pero la cantidad de elementos almacenados en una lista es modificable.

Note
Nota

Es posible modificar los elementos existentes en un Arreglo, sin embargo, no se pueden agregar nuevas entradas a este.

La siguiente es la sintaxis para declarar una lista vacía:

Con esta sintaxis se puede crear una lista para almacenar los nombres de los estudiantes:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Es importante tener en cuenta que se debe importar el módulo Generic para poder utilizar Listas.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Simplemente es necesario agregar esta línea debajo de using System; para importar el módulo requerido.

Método Add()

Se pueden agregar elementos a una lista utilizando el método Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

El código anterior agregará cuatro elementos a la lista students.

Al igual que un arreglo de tipo string solo puede contener elementos de tipo string, una lista de tipo string solo puede aceptar elementos de tipo string.

Indexación

El primer elemento es Anna, por lo tanto tendrá el índice 0, mientras que Laura tendrá el índice 1 y así sucesivamente. Los elementos de una lista pueden accederse mediante indexación al igual que en un arreglo:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Método Count()

Se puede obtener la longitud de una lista utilizando su atributo Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Longitud dinámica

Tenga en cuenta que la longitud de una lista es dinámica (cambiable), por lo que varía a medida que agregamos elementos:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Inicialización

También podemos inicializar una lista con algunos elementos utilizando la siguiente sintaxis:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Recorrido de listas

Recorrido de una lista de manera similar a como se recorre un arreglo

Uso de un bucle for

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Uso de un bucle foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Consejo:

Para acortar la sintaxis de declaración, también se puede utilizar la declaración implícita. Recordando, una declaración explícita es cuando se especifica el tipo de dato durante la declaración de la variable.

index.cs

index.cs

copy
1
float number = 7.9f;

Por otro lado, en la declaración implícita simplemente se puede utilizar la palabra clave var y el compilador infiere automáticamente el tipo de dato de la variable según el valor asignado:

index.cs

index.cs

copy
1
var number = 7.9f;

También se puede utilizar la declaración implícita al declarar listas:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. ¿Cuál será la salida del siguiente código?

2. ¿Qué módulo se debe importar para utilizar listas?

3. ¿Qué método se utiliza para obtener el tamaño (longitud) de una lista?

question mark

¿Cuál será la salida del siguiente código?

Select the correct answer

question mark

¿Qué módulo se debe importar para utilizar listas?

Select the correct answer

question mark

¿Qué método se utiliza para obtener el tamaño (longitud) de una lista?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 2.04

book¿Qué Son las Listas?

Desliza para mostrar el menú

Imagina que tenemos una situación en la que queremos almacenar los nombres de todos los estudiantes que están tomando un determinado curso. La primera solución que se nos ocurre es crear un Array:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Sin embargo, si en algún momento hay más de 50 estudiantes, no podremos almacenar sus nombres. De manera similar, en una situación donde haya menos de 50 estudiantes, los espacios no ocupados en el arreglo serán un desperdicio de memoria; esto se convierte en un problema especialmente en arreglos grandes.

Aquí necesitamos una nueva estructura que pueda almacenar una cantidad variable de elementos. Afortunadamente, ya existe una estructura así, llamada Lista.

Las Listas son muy similares a los Arreglos, pero la cantidad de elementos almacenados en una lista es modificable.

Note
Nota

Es posible modificar los elementos existentes en un Arreglo, sin embargo, no se pueden agregar nuevas entradas a este.

La siguiente es la sintaxis para declarar una lista vacía:

Con esta sintaxis se puede crear una lista para almacenar los nombres de los estudiantes:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Es importante tener en cuenta que se debe importar el módulo Generic para poder utilizar Listas.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Simplemente es necesario agregar esta línea debajo de using System; para importar el módulo requerido.

Método Add()

Se pueden agregar elementos a una lista utilizando el método Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

El código anterior agregará cuatro elementos a la lista students.

Al igual que un arreglo de tipo string solo puede contener elementos de tipo string, una lista de tipo string solo puede aceptar elementos de tipo string.

Indexación

El primer elemento es Anna, por lo tanto tendrá el índice 0, mientras que Laura tendrá el índice 1 y así sucesivamente. Los elementos de una lista pueden accederse mediante indexación al igual que en un arreglo:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Método Count()

Se puede obtener la longitud de una lista utilizando su atributo Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Longitud dinámica

Tenga en cuenta que la longitud de una lista es dinámica (cambiable), por lo que varía a medida que agregamos elementos:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Inicialización

También podemos inicializar una lista con algunos elementos utilizando la siguiente sintaxis:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Recorrido de listas

Recorrido de una lista de manera similar a como se recorre un arreglo

Uso de un bucle for

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Uso de un bucle foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Consejo:

Para acortar la sintaxis de declaración, también se puede utilizar la declaración implícita. Recordando, una declaración explícita es cuando se especifica el tipo de dato durante la declaración de la variable.

index.cs

index.cs

copy
1
float number = 7.9f;

Por otro lado, en la declaración implícita simplemente se puede utilizar la palabra clave var y el compilador infiere automáticamente el tipo de dato de la variable según el valor asignado:

index.cs

index.cs

copy
1
var number = 7.9f;

También se puede utilizar la declaración implícita al declarar listas:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. ¿Cuál será la salida del siguiente código?

2. ¿Qué módulo se debe importar para utilizar listas?

3. ¿Qué método se utiliza para obtener el tamaño (longitud) de una lista?

question mark

¿Cuál será la salida del siguiente código?

Select the correct answer

question mark

¿Qué módulo se debe importar para utilizar listas?

Select the correct answer

question mark

¿Qué método se utiliza para obtener el tamaño (longitud) de una lista?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 1
some-alt