Compartir a través de


Tipos de colección F#

Si revisa este tema, puede determinar que mejor de tipo de colección de F# se adapta a una necesidad concreta. Estos tipos de colección difieren de los tipos de colección de.NET Framework, como los del espacio de nombres System.Collections.Generic , en que los tipos de colección de F# están diseñados de una perspectiva de programación funcional en lugar de una perspectiva orientado a objetos. Más específicamente, sólo la colección de matriz tiene elementos mutables. Por consiguiente, cuando se modifica una colección, se crea una instancia de colección modificada en lugar de modificar la colección original.

Los tipos de colección se diferencian en el tipo de estructura de datos en el que se almacenan los objetos. Las estructuras de datos como tablas hash, listas vinculadas, y matrices tienen diferentes características de rendimiento y un conjunto diferente de operaciones disponibles.

Tipos de colección de F#

La tabla siguiente muestra los tipos de colección de F#.

Tipo

Descripción

Vínculos relacionados

List

Una serie ordenada, e inmutable de elementos del mismo tipo. Implementado como una lista vinculada.

Listas (F#)

Módulo list

Matriz

Una colección de tamaño fijo, cero- basada, mutable de datos consecutivos que son todas del mismo tipo.

Matrices (F#)

Módulo array

Módulo Array2D

Módulo Array3D

seq

Una serie lógica de elementos que son todas del tipo. Las secuencias son especialmente útiles cuando tiene una recolección de datos grande, ordenada pero no esperan necesariamente utilizar todos los elementos. Los elementos individuales de la secuencia se calculan sólo cuando es necesario, por lo que una secuencia puede ser mejor que una lista si no todos los elementos se utiliza. Las secuencias se representan mediante el tipo de seq<'T>, que es un alias de IEnumerable<T>. Por consiguiente, cualquier tipo de .NET Framework que implemente IEnumerable puede utilizarse como una secuencia.

Secuencias (F#)

Module Seq

Mapa

Un diccionario inmutable de elementos. Los elementos tiene acceso a la clave.

Módulo de mapa

Set

Un conjunto inmutable basado en árboles binarios, donde es la función de comparación estructural de F#, que potencialmente utiliza las implementaciones de la interfaz de IComparable en los valores de clave.

Establezca el módulo

Tabla de funciones

Esta sección compara las funciones que están disponibles en los tipos de colección de F#. La complejidad computacional de la función recibe, donde es el tamaño n de la primera colección, y m es el tamaño de la segunda colección, si la hay. Un guión (-) indica que esta función no está disponible en la colección. Dado que las secuencias se evalúan de forma diferida, una función como Seq.distinct puede ser O (1) porque vuelve inmediatamente, aunque todavía afecta al rendimiento de la secuencia cuando aparece.

Función

Matriz

List

secuencia

Mapa

Set

Descripción

append

OR (M)

OR (N)

OR (N)

-

-

Devuelve una nueva colección que contiene los elementos de la primera colección seguida de los elementos de la segunda colección.

agregar

-

-

-

O (log N)

O (log N)

Devuelve una nueva colección con el elemento agregado.

average

OR (N)

OR (N)

OR (N)

-

-

Devuelve el promedio de los elementos de la colección.

averageBy

OR (N)

OR (N)

OR (N)

-

-

Devuelve el promedio de los resultados de la función proporcionada aplicado a cada elemento.

blit

OR (N)

-

-

-

-

Copia una sección de una matriz.

cache

-

-

OR (N)

-

-

Cálculos y elementos de los almacenes de una secuencia.

cast

-

-

OR (N)

-

-

Convierte los elementos al tipo especificado.

choose

OR (N)

OR (N)

OR (N)

-

-

Aplica la función especificada f a cada elemento x de la lista. Devuelve la lista que contiene los resultados de cada elemento para el cual la función devuelve Some(f(x)).

collect

OR (N)

OR (N)

OR (N)

-

-

Aplica la función especificada a cada elemento de la colección, concatena todos los resultados, y devuelve la lista combinada.

compareWith

-

-

OR (N)

-

-

Compara dos secuencias mediante la función de comparación especificada, elemento por elemento.

concat

OR (N)

OR (N)

OR (N)

-

-

Combina la enumeración de enumeraciones especificada como una sola enumeración concatenada.

contains

-

-

-

-

O (log N)

Devuelve true si el conjunto contiene el elemento especificado.

containsKey

-

-

-

O (log N)

-

Comprueba si un elemento está en el dominio de un mapa.

count

-

-

-

-

OR (N)

Devuelve el número de elementos del conjunto.

countBy

-

-

OR (N)

-

-

Aplica una función tecla- que representa a cada elemento de una secuencia, y devuelve una secuencia que genera claves únicas y su número de apariciones de la secuencia original.

copy

OR (N)

-

OR (N)

-

-

Copia la colección.

create

OR (N)

-

-

-

-

Crea una matriz de elementos enteros que son todos inicialmente el valor especificado.

delay

-

-

o (1)

-

-

Devuelve una secuencia que se compila de la especificación retrasada dada de una secuencia.

difference

-

-

-

-

O (m * log N)

Devuelve un nuevo conjunto con los elementos del segundo conjunto quitado del primer conjunto.

distinct

o (1)*

Devuelve una secuencia que no contiene ninguna entrada duplicada según las comparaciones genéricas de hash y de igualdad en las entradas. Si un elemento aparece varias veces en la secuencia, se descartan apariciones posteriores.

distinctBy

o (1)*

Devuelve una secuencia que no contiene ninguna entrada duplicada según las comparaciones genéricas de hash e igualdad en las claves que la función tecla- que genera especificada devuelve. Si un elemento aparece varias veces en la secuencia, se descartan apariciones posteriores.

empty

o (1)

o (1)

o (1)

o (1)

o (1)

Crea una colección vacía.

exists

OR (N)

OR (N)

OR (N)

O (log N)

O (log N)

Comprueba si algún elemento de la secuencia cumple el predicado especificado.

exists2

O (min (n, M))

-

O (min (n, M))

Comprueba si algún par de elementos correspondientes de las secuencias de entrada satisface el predicado especificado.

fill

OR (N)

Establece un intervalo de elementos de matriz al valor especificado.

filter

OR (N)

OR (N)

OR (N)

OR (N)

OR (N)

Devuelve una nueva colección que contiene solo los elementos de la colección para los cuales el predicado especificado devuelve true.

find

OR (N)

OR (N)

OR (N)

O (log N)

-

Devuelve el primer elemento para el cual la función especificada devuelve true. Si no existe ningún elemento, devuelve KeyNotFoundException.

findIndex

OR (N)

OR (N)

OR (N)

-

-

Devuelve el índice del primer elemento de la matriz que cumple el predicado especificado. Provoca KeyNotFoundException si ningún elemento cumple el predicado.

findKey

-

-

-

O (log N)

-

Evalúa la función en cada asignación de la colección, y devuelve la clave de la primera asignación para el cual la función devuelve true. Si no existe ningún elemento, esta función genera KeyNotFoundException.

fold

OR (N)

OR (N)

OR (N)

OR (N)

OR (N)

Aplica una función a cada elemento de la colección y subprocesa un argumento acumulador durante el cálculo. Si la función de entrada es f y los elementos son i0… in, esta f de los cálculos de la función (… (s i0 f)…) en.

fold2

OR (N)

OR (N)

-

-

-

Aplica una función a los elementos correspondientes de dos colecciones y subprocesa un argumento acumulador durante el cálculo. Las colecciones deben tener el mismo tamaño. Si la función de entrada es f y los elementos son… jN i0… in y j0, esta f de los cálculos de la función (… (f s i0 j0)...) En jN.

foldBack

OR (N)

OR (N)

-

OR (N)

OR (N)

Aplica una función a cada elemento de la colección y subprocesa un argumento acumulador durante el cálculo. Si la función de entrada es f y los elementos son i0… in, esta f i0 de los cálculos de la función (… (f in s)).

foldBack2

OR (N)

OR (N)

-

-

-

Aplica una función a los elementos correspondientes de dos colecciones y subprocesa un argumento acumulador durante el cálculo. Las colecciones deben tener el mismo tamaño. Si la función de entrada es f y los elementos son… jN i0… in y j0, esta f i0 j0 de los cálculos de la función (… (f in jN s)).

forall

OR (N)

OR (N)

OR (N)

OR (N)

OR (N)

Comprueba si todos los elementos de la colección satisfacen el predicado especificado.

forall2

OR (N)

OR (N)

OR (N)

-

-

Comprueba si todos los elementos correspondientes de la colección satisfacen el predicado especificado en pares.

get/enésimo

o (1)

OR (N)

OR (N)

-

-

Devuelve un elemento de la colección según su índice.

head

-

o (1)

o (1)

-

-

Devuelve el primer elemento de la colección.

init

OR (N)

OR (N)

o (1)

-

-

Crea una colección especificada la dimensión y la función de generador especificadas para calcular los elementos.

initInfinite

-

-

o (1)

-

-

Genera una secuencia que, cuando se itera, devolverá elementos sucesivos mediante una llamada a la función especificada.

intersect

-

-

-

-

O (n de registro * registro M)

Calcula la intersección de dos conjuntos.

intersectMany

-

-

-

-

OR (N1 * N2…)

Calcula la intersección de una secuencia de conjuntos. La secuencia no debe estar vacía.

isEmpty

o (1)

o (1)

o (1)

o (1)

-

Devuelve true si la colección está vacía.

isProperSubset

-

-

-

-

O (m * log N)

Devuelve true si todos los elementos del primer conjunto se encuentran en el segundo conjunto y, por lo menos un elemento del segundo conjunto no está en el primer conjunto.

isProperSuperset

-

-

-

-

O (m * log N)

Devuelve true si todos los elementos del segundo conjunto se encuentran en el primero que establecido, y al menos un elemento del primer conjunto no se encuentra en el segundo conjunto.

isSubset

-

-

-

-

O (m * log N)

Devuelve true si todos los elementos del primer conjunto se encuentran en el segundo conjunto.

isSuperset

-

-

-

-

O (m * log N)

Devuelve true si todos los elementos del segundo conjunto se encuentran en el primer conjunto.

iter

OR (N)

OR (N)

OR (N)

OR (N)

OR (N)

Aplica la función especificada a cada elemento de la colección.

iteri

OR (N)

OR (N)

OR (N)

-

-

Aplica la función especificada a cada elemento de la colección. El entero que se pasa a la función indica el índice del elemento.

iteri2

OR (N)

OR (N)

-

-

-

Aplica la función especificada a un par de elementos que se extraigan de los índices correspondientes de dos matrices. El entero que se pasa a la función indica el índice de los elementos. Las dos matrices deben tener la misma longitud.

iter2

OR (N)

OR (N)

OR (N)

-

-

Aplica la función especificada a un par de elementos que se extraigan de los índices correspondientes de dos matrices. Las dos matrices deben tener la misma longitud.

length

o (1)

OR (N)

OR (N)

-

-

Devuelve el número de elementos de la colección.

map

OR (N)

OR (N)

o (1)

-

-

Compila una colección cuyos elementos son el resultado de aplicar la función especificada a cada elemento de la matriz.

map2

OR (N)

OR (N)

o (1)

-

-

Compila una colección cuyos elementos son el resultado de aplicar la función especificada a los elementos correspondientes de las dos colecciones en pares. Las dos matrices entradas deben tener la misma longitud.

map3

-

OR (N)

-

-

-

Compila una colección cuyos elementos son el resultado de aplicar la función especificada a los elementos correspondientes de las tres colecciones simultáneamente.

mapi

OR (N)

OR (N)

OR (N)

-

-

Compila una matriz cuyos elementos son el resultado de aplicar la función especificada a cada elemento de la matriz. El índice de entero que se pasa a la función indica el índice del elemento se a transformar que.

mapi2

OR (N)

OR (N)

-

-

-

Compila una colección cuyos elementos son el resultado de aplicar la función especificada a los elementos correspondientes de las dos colecciones en pares, también pasa el índice de los elementos. Las dos matrices entradas deben tener la misma longitud.

max

OR (N)

OR (N)

OR (N)

-

-

Devuelve el elemento más grande de la colección, en comparación con el operador de MÁX .

maxBy

OR (N)

OR (N)

OR (N)

-

-

Devuelve el elemento más grande de la colección, en comparación con MÁX en el resultado de la función.

maxElement

-

-

-

-

O (log N)

Devuelve el elemento más grande del conjunto según el orden que se utiliza para el conjunto.

min

OR (N)

OR (N)

OR (N)

-

-

Devuelve el menor elemento en la colección, en comparación con el operador de MÍN .

minBy

OR (N)

OR (N)

OR (N)

-

-

Devuelve el menor elemento en la colección, en comparación con el operador de MÍN en el resultado de la función.

minElement

-

-

-

-

O (log N)

Devuelve el menor elemento del conjunto según el orden que se utiliza para el conjunto.

ofArray

-

OR (N)

o (1)

OR (N)

OR (N)

Crea una colección que contiene los mismos elementos que la matriz especificada.

ofList

OR (N)

-

o (1)

OR (N)

OR (N)

Crea una colección que contiene los mismos elementos que la lista especificada.

ofSeq

OR (N)

OR (N)

-

OR (N)

OR (N)

Crea una colección que contiene los mismos elementos que la secuencia especificada.

pairwise

-

-

OR (N)

-

-

Devuelve una secuencia de cada elemento de la secuencia de entrada y su predecesor a excepción del primer elemento, que se devuelve únicamente como predecesor del segundo elemento.

partición

OR (N)

OR (N)

-

OR (N)

OR (N)

Divide la colección en dos colecciones. La primera colección contiene los elementos para los cuales el predicado especificado devuelve true, y la segunda colección contiene los elementos para los cuales el predicado especificado devuelve false.

permute

OR (N)

OR (N)

-

-

-

Devuelve una matriz con todos los elementos permutados según la permutación especificada.

pick

OR (N)

OR (N)

OR (N)

O (log N)

-

Aplica la función especificada a elementos sucesivos, y devuelve el primer resultado para el cual la función devuelve Some. Si la función nunca devuelve Some, se provoca KeyNotFoundException .

readonly

-

-

OR (N)

-

-

Crea un objeto de secuencia que los delegados en la secuencia especificada se opongan. Esta operación garantiza que una conversión de tipo no pueda redescubrir y transformar la secuencia original. Por ejemplo, si se especifica una matriz, la secuencia devuelta devolverá los elementos de la matriz, pero no puede convertir el objeto de secuencia devuelto en una matriz.

reduce

OR (N)

OR (N)

OR (N)

-

-

Aplica una función a cada elemento de la colección y subprocesa un argumento acumulador durante el cálculo. Esta función comienza aplicando la función a los dos primeros elementos, pasa este resultado en la función junto con el tercer elemento, y así sucesivamente. La función devuelve el resultado final.

reduceBack

OR (N)

OR (N)

-

-

-

Aplica una función a cada elemento de la colección y subprocesa un argumento acumulador durante el cálculo. Si la función de entrada es f y los elementos son i0… in, esta f i0 de los cálculos de la función (… (f iN-1 in)).

remove

-

-

-

O (log N)

O (log N)

Quita un elemento del dominio de la asignación. No se produce ninguna excepción si el elemento no está presente.

replicate

-

OR (N)

-

-

-

Crea una lista de una longitud determinada con cada elemento establecido en el valor especificado.

rev

OR (N)

OR (N)

-

-

-

Devuelve una nueva lista con los elementos en orden inverso.

scan

OR (N)

OR (N)

OR (N)

-

-

Aplica una función a cada elemento de la colección y subprocesa un argumento acumulador durante el cálculo. Esta operación se aplica la función al segundo argumento y el primer elemento de la lista. La operación después pasa este resultado en la función junto con el segundo elemento etc. Finalmente, la operación devuelve la lista de resultados intermedios y el resultado final.

scanBack

OR (N)

OR (N)

-

-

-

Se parece a la operación foldBack pero a especificado el medio y los resultados finales.

singleton

-

-

o (1)

-

o (1)

Devuelve una secuencia que genera un solo elemento.

set

o (1)

-

-

-

-

Establece un elemento de una matriz al valor especificado.

skip

-

-

OR (N)

-

-

Devuelve una secuencia que omite N elementos de la secuencia subyacente y, a continuación, produce los elementos restantes de la secuencia.

skipWhile

-

-

OR (N)

-

-

Devuelve una secuencia que, cuando se itera, omite los elementos de la secuencia subyacente mientras el predicado especificado devuelve true y luego los elementos restantes de la secuencia.

sort

O (media del registro de n N)

o (N^2) peor caso

O (n log N)

O (n log N)

-

-

Ordena la colección por valor del elemento. Los elementos se comparan mediante Comparar.

sortBy

O (media del registro de n N)

o (N^2) peor caso

O (n log N)

O (n log N)

-

-

Ordena la lista especificada usando las teclas que la proyección especificada proporciona. Las claves se comparan mediante Comparar.

sortInPlace

O (media del registro de n N)

o (N^2) peor caso

-

-

-

-

Ordena los elementos de una matriz transformándolo en contexto y con la función de comparación especificada. Los elementos se comparan mediante Comparar.

sortInPlaceBy

O (media del registro de n N)

o (N^2) peor caso

-

-

-

-

Ordena los elementos de una matriz transformándolo en contexto y con la proyección especificada para las claves. Los elementos se comparan mediante Comparar.

sortInPlaceWith

O (media del registro de n N)

o (N^2) peor caso

-

-

-

-

Ordena los elementos de una matriz transformándolo en contexto y con la función de comparación especificada como criterio de ordenación.

sortWith

O (media del registro de n N)

o (N^2) peor caso

O (n log N)

-

-

-

Ordena los elementos de una colección, mediante la función de comparación especificada como criterio de ordenación y devuelve una nueva colección.

sub

OR (N)

-

-

-

-

Compila una matriz que contiene el subrango especificado es especificado al índice y la longitud.

sum

OR (N)

OR (N)

OR (N)

-

-

Devuelve la suma de los elementos de la colección.

sumBy

OR (N)

OR (N)

OR (N)

-

-

Devuelve la suma de los resultados que se generan aplicando la función a cada elemento de la colección.

tail

-

o (1)

-

-

-

Devuelve la lista sin el primer elemento.

take

-

-

OR (N)

-

-

Devuelve los elementos de la secuencia hasta un recuento especificado.

takeWhile

-

-

o (1)

-

-

Devuelve una secuencia que, cuando se itera, proporciona elementos de la secuencia subyacente mientras el predicado especificado devuelve true y no devuelve no más de elemento.

toArray

-

OR (N)

OR (N)

OR (N)

OR (N)

Crea una matriz a partir de la colección especificada.

toList

OR (N)

-

OR (N)

OR (N)

OR (N)

Crea una lista a partir de la colección especificada.

toSeq

o (1)

o (1)

-

o (1)

o (1)

Crea una secuencia de la colección especificada.

truncate

-

-

o (1)

-

-

Devuelve una secuencia que, cuando se lista, devuelva no más de elementos.

tryFind

OR (N)

OR (N)

OR (N)

O (log N)

-

Buscar un elemento que cumple el predicado especificado.

tryFindIndex

OR (N)

OR (N)

OR (N)

-

-

Buscar el primer elemento que satisface el predicado especificado y devuelve el índice del elemento correspondiente, o None si no existe ese elemento.

tryFindKey

-

-

-

O (log N)

-

Devuelve la clave de la primera asignación de la colección que cumple el predicado especificado, o devuelve None si no existe ese elemento.

tryPick

OR (N)

OR (N)

OR (N)

O (log N)

-

Aplica la función especificada a elementos sucesivos, y devuelve el primer resultado para el cual la función devuelve Some por un determinado valor. Si no existe ningún elemento, la operación devuelve None.

unfold

-

-

OR (N)

-

-

Devuelve una secuencia que contiene los elementos que el cálculo especificado genera.

union

-

-

-

-

O (m * log N)

Calcula la unión de los dos conjuntos.

unionMany

-

-

-

-

OR (N1 * N2…)

Calcula la unión de una secuencia de conjuntos.

unzip

OR (N)

OR (N)

OR (N)

-

-

Divide una lista de pares en dos listas.

unzip3

OR (N)

OR (N)

OR (N)

-

-

Divide una lista de triples en tres listas.

windowed

-

-

OR (N)

-

-

Devuelve una secuencia que genera ventanas deslizantes de los elementos que contienen que se extraen de la secuencia de entrada. Cada ventana se devuelve como una matriz nueva.

zip

OR (N)

OR (N)

OR (N)

-

-

Combina las dos colecciones en una lista de pares. Las dos listas deben tener la misma longitud.

zip3

OR (N)

OR (N)

OR (N)

-

-

Combina las tres colecciones en una lista de triples. Las listas deben tener la misma longitud.

Vea también

Otros recursos

Tipos en F#

Referencia del lenguaje F#