F # - Listas mutables

los List<'T> class representa una lista fuertemente tipada de objetos a los que se puede acceder por índice.

Es una contraparte mutable de la clase List. Es similar a las matrices, ya que se puede acceder a él mediante un índice, sin embargo, a diferencia de las matrices, las listas se pueden cambiar de tamaño. Por lo tanto, no es necesario especificar un tamaño durante la declaración.

Crear una lista mutable

Las listas se crean utilizando newpalabra clave y llamando al constructor de la lista. El siguiente ejemplo demuestra esto:

(* Creating a List *)
open System.Collections.Generic

let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])

Cuando compila y ejecuta el programa, produce el siguiente resultado:

0: Gone with the Wind
1: Atlas Shrugged
2: Fountainhead
3: Thornbirds
4: Rebecca
5: Narnia

La clase List (T)

La clase List (T) representa una lista fuertemente tipada de objetos a los que se puede acceder por índice. Proporciona métodos para buscar, ordenar y manipular listas.

Las siguientes tablas proporcionan las propiedades, constructores y métodos de la clase List (T):

Propiedades

Propiedad Descripción
Capacidad Obtiene o establece el número total de elementos que la estructura de datos interna puede contener sin cambiar el tamaño.
Contar Obtiene el número de elementos contenidos en la Lista (T).
Articulo Obtiene o establece el elemento en el índice especificado.

Constructores

Constructor Descripción
Lista (T) () Inicializa una nueva instancia de la clase List (T) que está vacía y tiene la capacidad inicial predeterminada.
Lista (T) (IEnumerable (T)) Inicializa una nueva 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.
Lista (T) (Int32) Inicializa una nueva instancia de la clase List (T) que está vacía y tiene la capacidad inicial especificada.

Método

Métodos Descripción
Añadir Agrega un objeto al final de la Lista (T).
AddRange Agrega los elementos de la colección especificada al final de la Lista (T).
AsReadOnly Devuelve un contenedor IList (T) de solo lectura para la colección actual.
BinarySearch (T) Busca en toda la Lista ordenada (T) un elemento utilizando el comparador predeterminado y devuelve el índice de base cero del elemento.
BinarySearch (T, IComparer (T)) Busca en toda la Lista ordenada (T) un elemento utilizando el comparador especificado y devuelve el índice de base cero del elemento.
BinarySearch (Int32, Int32, T, IComparer (T)) Busca un rango de elementos en la Lista ordenada (T) para un elemento usando el comparador especificado y devuelve el índice de base cero del elemento.
Claro Elimina todos los elementos de la Lista (T).
Contiene Determina si un elemento está en la Lista (T).
ConvertAll (TOutput) Convierte los elementos de la Lista actual (T) a otro tipo y devuelve una lista que contiene los elementos convertidos.
Copiar a (T []) Copia toda la Lista (T) en una matriz unidimensional compatible, comenzando por el principio de la matriz de destino.
Copiar a (T [], Int32) Copia toda la Lista (T) en una matriz unidimensional compatible, comenzando en el índice especificado de la matriz de destino.
Copiar a (Int32, T [], Int32, Int32) Copia un rango de elementos de la Lista (T) a una matriz unidimensional compatible, comenzando en el índice especificado de la matriz de destino.
Es igual a (objeto) Determina si el objeto especificado es igual al objeto actual. (Heredado de Object).
Existe Determina si la Lista (T) contiene elementos que coinciden con las condiciones definidas por el predicado especificado.
Finalizar Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de basura (heredado del objeto).
Encontrar Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve la primera aparición dentro de toda la Lista (T).
Encuentra todos Recupera todos los elementos que coinciden con las condiciones definidas por el predicado especificado.
FindIndex (predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición dentro de toda la Lista (T).
FindIndex (Int32, predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición dentro del rango de elementos de la Lista (T) que se extiende desde el índice especificado hasta el último elemento.
FindIndex (Int32, Int32, predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición dentro del rango de elementos en la Lista (T) que comienza en el índice especificado y contiene el número especificado de elementos.
FindLast Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve la última aparición dentro de toda la Lista (T).
FindLastIndex (predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la última aparición dentro de toda la Lista (T).
FindLastIndex (Int32, predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la última aparición dentro del rango de elementos de la Lista (T) que se extiende desde el primer elemento hasta el índice especificado.
FindLastIndex (Int32, Int32, predicado (T)) Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la última aparición dentro del rango de elementos de la Lista (T) que contiene el número especificado de elementos y termina en el índice especificado.
Para cada Realiza la acción especificada en cada elemento de la Lista (T).
GetEnumerator Devuelve un enumerador que recorre en iteración la Lista (T).
GetHashCode Sirve como la función hash predeterminada. (Heredado de Object).
GetRange Crea una copia superficial de un rango de elementos en la lista de origen (T).
GetType Obtiene el tipo de la instancia actual. (Heredado de Object).
Índice de (T) Busca el objeto especificado y devuelve el índice de base cero de la primera aparición dentro de toda la Lista (T).
IndexOf (T, Int32) Busca el objeto especificado y devuelve el índice de base cero de la primera aparición dentro del rango de elementos de la Lista (T) que se extiende desde el índice especificado hasta el último elemento.
IndexOf (T, Int32, Int32) Busca el objeto especificado y devuelve el índice de base cero de la primera aparición dentro del rango de elementos en la Lista (T) que comienza en el índice especificado y contiene el número especificado de elementos.
Insertar Inserta un elemento en la Lista (T) en el índice especificado.
InsertRange Inserta los elementos de una colección en la Lista (T) en el índice especificado.
LastIndexOf (T) Busca el objeto especificado y devuelve el índice de base cero de la última aparición dentro de toda la Lista (T).
LastIndexOf (T, Int32) Busca el objeto especificado y devuelve el índice de base cero de la última aparición dentro del rango de elementos de la Lista (T) que se extiende desde el primer elemento hasta el índice especificado.
LastIndexOf (T, Int32, Int32) Busca el objeto especificado y devuelve el índice de base cero de la última aparición dentro del rango de elementos en la Lista (T) que contiene el número especificado de elementos y termina en el índice especificado.
MemberwiseClone Crea una copia superficial del objeto actual. (Heredado de Object).
Eliminar Elimina la primera aparición de un objeto específico de la Lista (T).
Eliminar todo Elimina todos los elementos que coinciden con las condiciones definidas por el predicado especificado.
RemoveAt Elimina el elemento en el índice especificado de la Lista (T).
RemoveRange Elimina un rango de elementos de la Lista (T).
Contrarrestar() Invierte el orden de los elementos en toda la Lista (T).
Inversa (Int32, Int32) Invierte el orden de los elementos en el rango especificado.
Ordenar() Ordena los elementos de toda la Lista (T) utilizando el comparador predeterminado.
Ordenar (Comparación (T)) Ordena los elementos en toda la Lista (T) usando el Sistema especificado. Comparación (T).
Ordenar (IComparer (T)) Ordena los elementos de toda la Lista (T) utilizando el comparador especificado.
Ordenar (Int32, Int32, IComparer (T)) Ordena los elementos en un rango de elementos en List (T) usando el comparador especificado.
ToArray Copia los elementos de la Lista (T) en una nueva matriz.
Encadenar Devuelve una cadena que representa el objeto actual. (Heredado de Object).
TrimExcess Establece la capacidad en el número real de elementos en la Lista (T), si ese número es menor que un valor de umbral.
TrueForAll Determina si cada elemento de la Lista (T) coincide con las condiciones definidas por el predicado especificado.

Ejemplo

(* Creating a List *)
open System.Collections.Generic

let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")

printfn"Total %d books" booksList.Count
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.Insert(2, "Roots")

printfn("after inserting at index 2")
printfn"Total %d books" booksList.Count

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.RemoveAt(3)

printfn("after removing from index 3")
printfn"Total %d books" booksList.Count

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])

Cuando compila y ejecuta el programa, produce el siguiente resultado:

Total 6 books
0: Gone with the Wind
1: Atlas Shrugged
2: Fountainhead
3: Thornbirds
4: Rebecca
5: Narnia
after inserting at index 2
Total 7 books
0: Gone with the Wind
1: Atlas Shrugged
2: Roots
3: Fountainhead
4: Thornbirds
5: Rebecca
6: Narnia
after removing from index 3
Total 6 books
0: Gone with the Wind
1: Atlas Shrugged
2: Roots
3: Thornbirds
4: Rebecca
5: Narnia