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 |
---|---|---|
Una serie ordenada, e inmutable de elementos del mismo tipo. Implementado como una lista vinculada. |
||
Una colección de tamaño fijo, cero- basada, mutable de datos consecutivos que son todas del mismo tipo. |
||
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. |
||
Un diccionario inmutable de elementos. Los elementos tiene acceso a la clave. |
||
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. |
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. |