Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al revisar este tema, puede determinar qué tipo de colección de F# se adapta mejor a una necesidad determinada. Estos tipos de colección difieren de los tipos de colección de .NET, como los del System.Collections.Generic espacio de nombres, en que los tipos de colección F# se diseñan desde una perspectiva de programación funcional en lugar de una perspectiva orientada a objetos. Más concretamente, solo la colección de matrices tiene elementos mutables. Por lo tanto, al modificar una colección, se crea una instancia de la colección modificada en lugar de modificar la colección original.
Los tipos de colección también difieren 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 características de rendimiento diferentes y un conjunto diferente de operaciones disponibles.
Tabla de tipos de colección
En la tabla siguiente se muestran los tipos de colección de F#.
| Tipo | Descripción | Vínculos relacionados |
|---|---|---|
| Lista | Una serie ordenada e inmutable de elementos del mismo tipo. Se implementa como una lista vinculada. |
Listas Módulo de lista |
| Matriz | Colección mutable de tamaño fijo, de base cero y mutable de elementos de datos consecutivos que son todos del mismo tipo. | matrices de Módulo de matriz Módulo Array2D Módulo Array3D |
| seq | Una serie lógica de elementos que son de un tipo. Las secuencias son especialmente útiles cuando se tiene una colección grande y ordenada de datos, pero no necesariamente se espera usar todos los elementos. Los elementos de secuencia individuales solo se calculan según sea necesario, por lo que una secuencia puede funcionar mejor que una lista si no se usan todos los elementos. Las secuencias se representan mediante el seq<'T> tipo , que es un alias para IEnumerable<T>. Por lo tanto, cualquier tipo de .NET Framework que implemente System.Collections.Generic.IEnumerable<'T> se puede usar como una secuencia. |
Secuencias Módulo Seq |
| Map | Diccionario inmutable de elementos. Se accede a los elementos mediante clave. | Módulo de mapa |
| Set | Un conjunto inmutable basado en árboles binarios, donde la comparación es la función de comparación estructural de F#, que potencialmente usa implementaciones de la System.IComparable interfaz en valores de clave. |
Establecer módulo |
Tabla de funciones
En esta sección se comparan las funciones disponibles en los tipos de colección de F#. Se da la complejidad computacional de la función, donde N es el tamaño de la primera colección, y M es el tamaño de la segunda colección, si existe. 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 devuelve inmediatamente, aunque sigue afectando al rendimiento de la secuencia cuando se enumera.
| Función | Array | Lista | Secuencia | Mapa | Establecer | Descripción |
|---|---|---|---|---|---|---|
| append | O(N) | O(N) | O(N) | - | - | Devuelve una nueva colección que contiene los elementos de la primera colección seguida de los elementos de la segunda colección. |
| añadir | - | - | - | O(log(N)) | O(log(N)) | Devuelve una nueva colección con el elemento agregado. |
| promedio | O(N) | O(N) | O(N) | - | - | Devuelve el promedio de los elementos de la colección. |
| averageBy | O(N) | O(N) | O(N) | - | - | Devuelve el promedio de los resultados de la función proporcionada aplicada a cada elemento. |
| Blit | O(N) | - | - | - | - | Copia una sección de una matriz. |
| cache | - | - | O(N) | - | - | Calcula y almacena elementos de una secuencia. |
| Conversión | - | - | O(N) | - | - | Convierte los elementos en el tipo especificado. |
| choose | O(N) | O(N) | O(N) | - | - | Aplica la función f especificada a cada elemento x de la lista. Devuelve la lista que contiene los resultados de cada elemento donde la función devuelve Some(f(x)). |
| recoger | O(N) | O(N) | O(N) | - | - | Aplica la función dada a cada elemento de la colección, concatena todos los resultados y devuelve la lista combinada. |
| compareWith | - | - | O(N) | - | - | Compara dos secuencias mediante la función de comparación dada, elemento por elemento. |
| concat | O(N) | O(N) | O(N) | - | - | Combina la enumeración de enumeración de enumeraciones especificadas como una sola enumeración concatenada. |
| contiene | - | - | - | - | 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. |
| Recuento | - | - | - | - | O(N) | Devuelve el número de elementos del conjunto. |
| countBy | - | - | O(N) | - | - | Aplica una función de generación de claves a cada elemento de una secuencia y devuelve una secuencia que produce claves únicas y su número de repeticiones en la secuencia original. |
| copiar | O(N) | - | O(N) | - | - | Copia la colección. |
| crear | O(N) | - | - | - | - | Crea una matriz de elementos completos que son inicialmente el valor especificado. |
| delay | - | - | O(1) | - | - | Devuelve una secuencia creada a partir de la especificación diferida especificada de una secuencia. |
| diferencia | - | - | - | - | O(M*log(N)) | Devuelve un nuevo conjunto con los elementos del segundo conjunto quitados del primer conjunto. |
| distinct | O(1)* | Devuelve una secuencia que no contiene entradas duplicadas según comparaciones genéricas de hash e igualdad en las entradas. Si un elemento se produce varias veces en la secuencia, se descartan las apariciones posteriores. | ||||
| distinctBy | O(1)* | Devuelve una secuencia que no contiene entradas duplicadas según las comparaciones genéricas de hash e igualdad en las claves que devuelve la función de generación de claves especificada. Si un elemento se produce varias veces en la secuencia, se descartan las apariciones posteriores. | ||||
| vacío | O(1) | O(1) | O(1) | O(1) | O(1) | Crea una colección vacía. |
| Existe | O(N) | O(N) | O(N) | O(log(N)) | O(log(N)) | Comprueba si algún elemento de la secuencia satisface 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 | O(N) | Establece un intervalo de elementos de la matriz en el valor especificado. | ||||
| filtro | O(N) | O(N) | O(N) | O(N) | O(N) | Devuelve una nueva colección que contiene solo los elementos de la colección para los que el predicado especificado devuelve true. |
| encontrar | O(N) | O(N) | O(N) | O(log(N)) | - | Devuelve el primer elemento para el que la función especificada devuelve true. Devuelve System.Collections.Generic.KeyNotFoundException si no existe este elemento. |
| findIndex | O(N) | O(N) | O(N) | - | - | Devuelve el índice del primer elemento de la matriz que satisface el predicado especificado.
System.Collections.Generic.KeyNotFoundException Genera si ningún elemento satisface 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 donde la función devuelve true. Si no existe este elemento, esta función genera System.Collections.Generic.KeyNotFoundException. |
| doblar | O(N) | O(N) | O(N) | O(N) | O(N) | Aplica una función a cada elemento de la colección, subprocesando un argumento de acumulador a través del cálculo. Si la función de entrada es f y los elementos son i0... iN, esta función calcula f (... (f s i0)...) en. |
| fold2 | O(N) | O(N) | - | - | - | Aplica una función a los elementos correspondientes de dos colecciones, subprocesando un argumento de acumulador a través del cálculo. Las colecciones deben tener tamaños idénticos. Si la función de entrada es f y los elementos son i0... iN y j0... jN, esta función calcula f (... (f s i0 j0)...) iN jN. |
| foldBack | O(N) | O(N) | - | O(N) | O(N) | Aplica una función a cada elemento de la colección, subprocesando un argumento de acumulador a través del cálculo. Si la función de entrada es f y los elementos son i0... iN, esta función calcula f i0 (... (f iN s)). |
| foldBack2 | O(N) | O(N) | - | - | - | Aplica una función a los elementos correspondientes de dos colecciones, subprocesando un argumento de acumulador a través del cálculo. Las colecciones deben tener tamaños idénticos. Si la función de entrada es f y los elementos son i0... iN y j0... jN, esta función calcula f i0 j0 (... (f iN jN s)). |
| forall | O(N) | O(N) | O(N) | O(N) | O(N) | Comprueba si todos los elementos de la colección satisfacen el predicado especificado. |
| forall2 | O(N) | O(N) | O(N) | - | - | Comprueba si todos los elementos correspondientes de la colección satisfacen el predicado especificado de forma emparejada. |
| get/nth | O(1) | O(N) | O(N) | - | - | Devuelve un elemento de la colección dado su índice. |
| head | - | O(1) | O(1) | - | - | Devuelve el primer elemento de la colección. |
| inicialización | O(N) | O(N) | O(1) | - | - | Crea una colección dada la dimensión y una función de generador para calcular los elementos. |
| initInfinite | - | - | O(1) | - | - | Genera una secuencia que, cuando se itera, devuelve elementos sucesivos llamando a la función especificada. |
| cruzar | - | - | - | - | O(log(N)*log(M)) | Calcula la intersección de dos conjuntos. |
| intersectMany | - | - | - | - | O(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 están en el segundo conjunto y al 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 están en el primer conjunto y al menos un elemento del primer conjunto no está en el segundo conjunto. |
| isSubset | - | - | - | - | O(M*log(N)) | Devuelve true si todos los elementos del primer conjunto están en el segundo conjunto. |
| isSuperset | - | - | - | - | O(M*log(N)) | Devuelve true si todos los elementos del segundo conjunto están en el primer conjunto. |
| Iter | O(N) | O(N) | O(N) | O(N) | O(N) | Aplica la función especificada a cada elemento de la colección. |
| iteri | O(N) | O(N) | O(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 | O(N) | O(N) | - | - | - | Aplica la función dada a un par de elementos que se extraen de índices coincidentes en 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 | O(N) | O(N) | O(N) | - | - | Aplica la función dada a un par de elementos que se extraen de índices coincidentes en dos matrices. Las dos matrices deben tener la misma longitud. |
| último | O(1) | O(N) | O(N) | - | - | Devuelve el último elemento de la colección aplicable. |
| largura | O(1) | O(N) | O(N) | - | - | Devuelve el número de elementos de la colección. |
| mapa | O(N) | O(N) | O(1) | - | - | Compila una colección cuyos elementos son los resultados de aplicar la función dada a cada elemento de la matriz. |
| map2 | O(N) | O(N) | O(1) | - | - | Crea una colección cuyos elementos son los resultados de aplicar la función dada a los elementos correspondientes de las dos colecciones de forma emparejada. Las dos matrices de entrada deben tener la misma longitud. |
| map3 | - | O(N) | - | - | - | Crea una colección cuyos elementos son los resultados de aplicar la función dada a los elementos correspondientes de las tres colecciones simultáneamente. |
| mapi | O(N) | O(N) | O(N) | - | - | Compila una matriz cuyos elementos son los resultados de aplicar la función dada a cada elemento de la matriz. El índice entero que se pasa a la función indica el índice del elemento que se va a transformar. |
| mapi2 | O(N) | O(N) | - | - | - | Crea una colección cuyos elementos son los resultados de aplicar la función dada a los elementos correspondientes de las dos colecciones de forma emparejada, pasando también el índice de los elementos. Las dos matrices de entrada deben tener la misma longitud. |
| máximo | O(N) | O(N) | O(N) | - | - | Devuelve el elemento más grande de la colección, comparado con el operador max . |
| maxBy | O(N) | O(N) | O(N) | - | - | Devuelve el elemento más grande de la colección, comparado con max en el resultado de la función. |
| maxElement | - | - | - | - | O(log(N)) | Devuelve el elemento más grande del conjunto según la ordenación que se usa para el conjunto. |
| Min | O(N) | O(N) | O(N) | - | - | Devuelve el elemento mínimo de la colección, comparado con el operador min . |
| minBy | O(N) | O(N) | O(N) | - | - | Devuelve el elemento mínimo de la colección, comparado con el operador min en el resultado de la función. |
| minElement | - | - | - | - | O(log(N)) | Devuelve el elemento más bajo del conjunto según la ordenación que se usa para el conjunto. |
| ofArray | - | O(N) | O(1) | O(N) | O(N) | Crea una colección que contiene los mismos elementos que la matriz especificada. |
| ofList | O(N) | - | O(1) | O(N) | O(N) | Crea una colección que contiene los mismos elementos que la lista especificada. |
| ofSeq | O(N) | O(N) | - | O(N) | O(N) | Crea una colección que contiene los mismos elementos que la secuencia especificada. |
| Pairwise | - | - | O(N) | - | - | Devuelve una secuencia de cada elemento de la secuencia de entrada y su predecesor, excepto para el primer elemento, que solo se devuelve como predecesor del segundo elemento. |
| partition | O(N) | O(N) | - | O(N) | O(N) | Divide la colección en dos colecciones. La primera colección contiene los elementos para los que el predicado especificado devuelve truey la segunda colección contiene los elementos para los que el predicado especificado devuelve false. |
| permutar | O(N) | O(N) | - | - | - | Devuelve una matriz con todos los elementos permutados según la permutación especificada. |
| coger | O(N) | O(N) | O(N) | O(log(N)) | - | Aplica la función dada a elementos sucesivos, devolviendo el primer resultado donde la función devuelve Some. Si la función nunca devuelve Some, System.Collections.Generic.KeyNotFoundException se genera. |
| randomChoice | O(1) | O(1) | O(1) | - | - | Devuelve un elemento aleatorio de la colección especificada. |
| randomChoiceBy | O(1) | O(1) | O(1) | - | - | Devuelve un elemento aleatorio de la colección especificada con la función especificada randomizer . |
| randomChoiceWith | O(1) | O(1) | O(1) | - | - | Devuelve un elemento aleatorio de la colección especificada con la instancia especificada Random . |
| randomChoices | O(count) | O(count) | O(count) | - | - | Devuelve una colección de elementos aleatorios de la colección especificada, cada elemento se puede seleccionar varias veces. |
| randomChoicesBy | O(count) | O(count) | O(count) | - | - | Devuelve una colección de elementos aleatorios de la colección especificada con la función especificada randomizer , cada elemento se puede seleccionar varias veces. |
| randomChoicesWith | O(count) | O(count) | O(count) | - | - | Devuelve una colección de elementos aleatorios de la colección especificada con la instancia especificada Random , cada elemento se puede seleccionar varias veces. |
| randomSample | O(count) | O(count) | O(count) | - | - | Devuelve una muestra aleatoria de elementos de la colección determinada, cada elemento solo se puede seleccionar una vez. |
| randomSampleBy | O(count) | O(count) | O(count) | - | - | Devuelve una muestra aleatoria de elementos del colleciton dado con la función especificada randomizer , cada elemento solo se puede seleccionar una vez. |
| randomSampleWith | O(count) | O(count) | O(count) | - | - | Devuelve una muestra aleatoria de elementos de la colección especificada con la instancia especificada Random , cada elemento solo se puede seleccionar una vez. |
| randomShuffle | O(N) | O(N) | O(N) | - | - | Devuelve una nueva colección aleatoria en un orden aleatorio. |
| randomShuffleBy | O(N) | O(N) | O(N) | - | - | Devuelve una nueva colección aleatoria en un orden aleatorio con la función especificada randomizer . |
| randomShuffleWith | O(N) | O(N) | O(N) | - | - | Devuelve una nueva colección aleatoriamente en un orden aleatorio con la instancia especificada Random . |
| randomShuffleInPlace | O(N) | - | - | - | - | Ordena la matriz de entrada en un orden aleatorio mutando la matriz en contexto. |
| randomShuffleInPlaceBy | O(N) | - | - | - | - | Ordena la matriz de entrada en un orden aleatorio mediante la función especificada randomizer mediante la mutación de la matriz en contexto. |
| randomShuffleInPlaceWith | O(N) | - | - | - | - | Ordena la matriz de entrada en un orden aleatorio con la instancia especificada Random mutando la matriz en contexto. |
| readonly | - | - | O(N) | - | - | Crea un objeto de secuencia que se delega en el objeto de secuencia especificado. Esta operación garantiza que una conversión de tipos no pueda volver a detectar y mutar la secuencia original. Por ejemplo, si se proporciona una matriz, la secuencia devuelta devolverá los elementos de la matriz, pero no se puede convertir el objeto de secuencia devuelto en una matriz. |
| reducir | O(N) | O(N) | O(N) | - | - | Aplica una función a cada elemento de la colección, subprocesando un argumento de acumulador a través del cálculo. Esta función comienza aplicando la función a los dos primeros elementos, pasa este resultado a la función junto con el tercer elemento, etc. La función devuelve el resultado final. |
| reduceBack | O(N) | O(N) | - | - | - | Aplica una función a cada elemento de la colección, subprocesando un argumento de acumulador a través del cálculo. Si la función de entrada es f y los elementos son i0... iN, esta función calcula f i0 (... (f iN-1 iN)). |
| eliminar | - | - | - | O(log(N)) | O(log(N)) | Quita un elemento del dominio del mapa. No se genera ninguna excepción si el elemento no está presente. |
| replicar | - | O(N) | - | - | - | Crea una lista de una longitud especificada con cada elemento establecido en el valor especificado. |
| Rev | O(N) | O(N) | - | - | - | Devuelve una nueva lista con los elementos en orden inverso. |
| escaneo | O(N) | O(N) | O(N) | - | - | Aplica una función a cada elemento de la colección, subprocesando un argumento de acumulador a través del cálculo. Esta operación aplica la función al segundo argumento y al primer elemento de la lista. A continuación, la operación pasa este resultado a la función junto con el segundo elemento, etc. Por último, la operación devuelve la lista de resultados intermedios y el resultado final. |
| scanBack | O(N) | O(N) | - | - | - | Se parece a la operación foldBack, pero devuelve los resultados intermedios y finales. |
| singleton | - | - | O(1) | - | O(1) | Devuelve una secuencia que produce solo un elemento. |
| establecer | O(1) | - | - | - | - | Establece un elemento de una matriz en el valor especificado. |
| saltarse | - | - | O(N) | - | - | Devuelve una secuencia que omite N elementos de la secuencia subyacente y, a continuación, produce los elementos restantes de la secuencia. |
| skipWhile | - | - | O(N) | - | - | Devuelve una secuencia que, cuando se itera, omite los elementos de la secuencia subyacente mientras el predicado especificado devuelve true y, a continuación, produce los elementos restantes de la secuencia. |
| Sort | Promedio de O(N*log(N)) O(N^2) peor caso |
O(N*log(N)) | O(N*log(N)) | - | - | Ordena la colección por valor de elemento. Los elementos se comparan mediante la comparación. |
| sortBy | Promedio de O(N*log(N)) O(N^2) peor caso |
O(N*log(N)) | O(N*log(N)) | - | - | Ordena la lista dada mediante claves que proporciona la proyección dada. Las claves se comparan mediante la comparación. |
| sortInPlace | Promedio de O(N*log(N)) O(N^2) peor caso |
- | - | - | - | Ordena los elementos de una matriz mutando en su lugar y usando la función de comparación dada. Los elementos se comparan mediante la comparación. |
| sortInPlaceBy | Promedio de O(N*log(N)) O(N^2) peor caso |
- | - | - | - | Ordena los elementos de una matriz mutando en su lugar y usando la proyección dada para las claves. Los elementos se comparan mediante la comparación. |
| sortInPlaceWith | Promedio de O(N*log(N)) O(N^2) peor caso |
- | - | - | - | Ordena los elementos de una matriz mutando en su lugar y usando la función de comparación dada como orden. |
| sortWith | Promedio de O(N*log(N)) O(N^2) peor caso |
O(N*log(N)) | - | - | - | Ordena los elementos de una colección, utilizando la función de comparación dada como orden y devolviendo una nueva colección. |
| submarino | O(N) | - | - | - | - | Compila una matriz que contiene el subrango especificado iniciando el índice y la longitud. |
| suma | O(N) | O(N) | O(N) | - | - | Devuelve la suma de los elementos de la colección. |
| sumBy | O(N) | O(N) | O(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 su primer elemento. |
| take | - | - | O(N) | - | - | Devuelve los elementos de la secuencia hasta un recuento especificado. |
| takeWhile | - | - | O(1) | - | - | Devuelve una secuencia que, cuando se itera, produce elementos de la secuencia subyacente mientras el predicado especificado devuelve true y, a continuación, no devuelve más elementos. |
| toArray | - | O(N) | O(N) | O(N) | O(N) | Crea una matriz a partir de la colección especificada. |
| toList | O(N) | - | O(N) | O(N) | O(N) | Crea una lista a partir de la colección especificada. |
| toSeq | O(1) | O(1) | - | O(1) | O(1) | Crea una secuencia a partir de la colección especificada. |
| truncate | - | - | O(1) | - | - | Devuelve una secuencia que, cuando se enumera, no devuelve más de N elementos. |
| tryFind | O(N) | O(N) | O(N) | O(log(N)) | - | Busca un elemento que satisfaga un predicado determinado. |
| tryFindIndex | O(N) | O(N) | O(N) | - | - | Busca el primer elemento que satisface un predicado determinado y devuelve el índice del elemento coincidente o None si no existe dicho elemento. |
| tryFindKey | - | - | - | O(log(N)) | - | Devuelve la clave de la primera asignación de la colección que satisface el predicado especificado o devuelve None si no existe dicho elemento. |
| tryPick | O(N) | O(N) | O(N) | O(log(N)) | - | Aplica la función dada a elementos sucesivos, devolviendo el primer resultado donde la función devuelve Some para algún valor. Si no existe este elemento, la operación devuelve None. |
| desplegar | - | - | O(N) | - | - | Devuelve una secuencia que contiene los elementos que genera el cálculo especificado. |
| union | - | - | - | - | O(M*log(N)) | Calcula la unión de los dos conjuntos. |
| unionMany | - | - | - | - | O(N1*N2...) | Calcula la unión de una secuencia de conjuntos. |
| unzip | O(N) | O(N) | O(N) | - | - | Divide una lista de pares en dos listas. |
| descomprimir3 | O(N) | O(N) | O(N) | - | - | Divide una lista de triples en tres listas. |
| Ventana | - | - | O(N) | - | - | Devuelve una secuencia que produce ventanas deslizantes de elementos que se extraen de la secuencia de entrada. Cada ventana se devuelve como una matriz nueva. |
| archivo comprimido | O(N) | O(N) | O(N) | - | - | Combina las dos colecciones en una lista de pares. Las dos listas deben tener longitudes iguales. |
| zip3 | O(N) | O(N) | O(N) | - | - | Combina las tres colecciones en una lista de triples. Las listas deben tener longitudes iguales. |