Partager via


Types de collection F#

En examinant cette rubrique, vous pouvez déterminer quel est le meilleur type de collection F# pour un besoin particulier. Ces types de collection diffèrent des types de collection dans le.NET Framework, tels que ceux dans l'espace de noms System.Collections.Generic , car les types de collection F# sont conçus du point de vue de la programmation fonctionnelle au lieu d'un point de vue orienté objet. Plus spécifiquement, seule la collection de tableau contient les éléments mutables. Par conséquent, lorsque vous modifiez une collection, vous créez une instance de la collection modifiée au lieu de modifier la collection d'origine.

Les types de collection diffèrent également dans la structure de type de données dans laquelle les objets sont enregistrés. Les structures de données telles que les tables de hachage, les listes liées, et les tableaux ont des caractéristiques de performance différentes et un autre ensemble d'opérations disponibles.

Types de collection F#

Le tableau suivant répertorie les types de collection F#.

Type

Description

Liens associés

Liste

Une série immuable et ordonnée d'éléments du même type. Implémenté comme une liste liée.

Listes (F#)

Module List

Tableau

Une collection mutable de taille fixe, de base zéro d'éléments de données consécutifs qui sont tous du même type.

Tableaux (F#)

Module Array

Module Array2D

Module Array3D

seq

Une série logique d'éléments d'un même type. Les séquences sont particulièrement utiles lorsque vous avez une vaste collection ordonnée de données, mais dont vous ne pensez pas nécessairement utiliser tous les éléments. Les éléments de séquence individuels sont calculés uniquement lorsque cela est nécessaire. Par conséquent, une séquence peut fournir de meilleures performances qu'une liste dans les situations dans lesquelles tous les éléments ne sont pas utilisés. Les séquences sont représentées par le type seq<'T> , qui est un alias pour IEnumerable<T>. Par conséquent, tout type .NET Framework qui implémente IEnumerable peut être utilisé comme une séquence.

Séquences (F#)

Module Seq

Table

Un dictionnaire immuable d´éléments. Les éléments sont accessibles par la clé.

Module Map

Set

Jeu immuable basé sur les arborescences binaires, dans lesquels la comparaison s'effectue par le biais de la fonction de comparaison structurelle F#, qui potentiellement utilise les implémentations de l'interface IComparablesur les valeurs de clés.

Module Set

Tableau des fonctions

Cette section compare les fonctions qui sont disponibles sur les types de collection F#. La complexité de calcul de la fonction est fournie, avec N est la taille de la première collection, et M est la taille de la deuxième collection éventuelle. Un tiret (-) indique que cette fonction n´est pas disponible dans la collection. Étant donné que les séquences sont évaluées paresseusement, une fonction telle que Seq.distinct peut être O(1) car elle retourne immédiatement, bien qu'elle affecte également les performances de la séquence une fois énuméré.

Fonction

Tableau

Liste

Séquence

Table

Set

Description

append

O(M)

O(N)

O(N)

-

-

Retourne une nouvelle collection qui contient les éléments de la première collection suivis des éléments de la seconde.

ajouter

-

-

-

O(log N)

O(log N)

Retourne une nouvelle collection avec l'élément ajouté.

average

O(N)

O(N)

O(N)

-

-

Retourne la moyenne des éléments dans la collection.

averageBy

O(N)

O(N)

O(N)

-

-

Retourne la moyenne des résultats de la fonction fournie appliquée à chaque élément.

blit

O(N)

-

-

-

-

Copie une section d'un tableau.

cache

-

-

O(N)

-

-

Calcule et stocke les éléments d'une séquence.

cast

-

-

O(N)

-

-

Convertit les éléments vers le type spécifié.

choose

O(N)

O(N)

O(N)

-

-

Applique la fonction donnée f à chaque élément x de la liste. Retourne la liste qui contient les résultats pour chaque élément où la fonction retourne Some(f(x)).

collect

O(N)

O(N)

O(N)

-

-

Applique la fonction donnée à chaque élément de la collection, concatène tous les résultats, et retourne la liste combinée.

compareWith

-

-

O(N)

-

-

Compare deux séquences à l'aide de la fonction de comparaison donnée, élément par élément.

concat

O(N)

O(N)

O(N)

-

-

Combine l'énumération d'énumérations donnée en une énumération concaténée unique.

contains

-

-

-

-

O(log N)

Retourne true si le jeu contient l'élément spécifié.

containsKey

-

-

-

O(log N)

-

Teste si un élément est dans le domaine du mappage.

count

-

-

-

-

O(N)

Retourne le nombre d'éléments figurant dans le jeu.

countBy

-

-

O(N)

-

-

Applique une fonction génératrice de clé à chaque élément d'une séquence et retourne une séquence qui produit des clés uniques et leur nombre d'occurrences dans la séquence d'origine.

copy

O(N)

-

O(N)

-

-

Copie la collection.

créer

O(N)

-

-

-

-

Crée un tableau de tous les éléments qui sont tous initialement la valeur donnée.

delay

-

-

O(1)

-

-

Retourne une séquence générée à partir de la spécification différée donnée d'une séquence.

difference

-

-

-

-

O(M * log N)

Retourne un nouveau jeu avec les éléments du second jeu supprimés du premier.

distinct

O(1)*

Retourne une séquence qui ne contient pas d'entrées en double conformément aux comparaisons de hachage et d'égalité génériques sur les entrées. Si un élément apparaît plusieurs fois dans la séquence, plus tard les occurrences sont ignorées.

distinctBy

O(1)*

Retourne une séquence qui ne contient aucune entrée en double conformément aux comparaisons de hachage et d'égalité génériques sur les clés que la fonction donnée génératrice de clé retourne. Si un élément apparaît plusieurs fois dans la séquence, plus tard les occurrences sont ignorées.

empty

O(1)

O(1)

O(1)

O(1)

O(1)

Crée une collection vide.

exists

O(N)

O(N)

O(N)

O(log N)

O(log N)

Teste si un élément de la séquence répond au prédicat donné.

exists2

O(min(N,M))

-

O(min(N,M))

Teste si une paire d'éléments correspondants des séquences d'entrée répond au prédicat donné.

fill

O(N)

Affecte une plage d'éléments du tableau avec la valeur donnée.

filter

O(N)

O(N)

O(N)

O(N)

O(N)

Retourne une nouvelle collection qui contient uniquement les éléments de la collection pour lesquels le prédicat donné retourne true.

find

O(N)

O(N)

O(N)

O(log N)

-

Retourne le premier élément pour lequel la fonction donnée retourne true. Si aucun élément de ce type n'existe, il retourne KeyNotFoundException.

findIndex

O(N)

O(N)

O(N)

-

-

Retourne l'index du premier élément du tableau qui répond au prédicat donné. Lève KeyNotFoundExceptionsi aucun élément répond au prédicat.

findKey

-

-

-

O(log N)

-

Évalue la fonction sur chaque mappage de la collection et retourne la clé pour le premier mappage où la fonction retourne true. Si aucun élément de ce type n'existe, cette fonction lève KeyNotFoundException.

fold

O(N)

O(N)

O(N)

O(N)

O(N)

Applique une fonction à chaque élément de la collection, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Si la fonction d'entrée est f et que les éléments sont i0...iN, alors cette fonction calcule f (... (f s i0)...) iN.

fold2

O(N)

O(N)

-

-

-

Applique une fonction aux éléments correspondants de deux collections, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Les collections doivent avoir des tailles identiques. Si la fonction d'entrée est f et que les éléments sont i0...iN et j0...jN, cette fonction calcule f (... (f s i0 j0)...) iN jN.

foldBack

O(N)

O(N)

-

O(N)

O(N)

Applique une fonction à chaque élément de la collection, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Si la fonction d'entrée est f et que les éléments sont i0...iN, cette fonction calcule f i0 (...(f iN s)).

foldBack2

O(N)

O(N)

-

-

-

Applique une fonction aux éléments correspondants de deux collections, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Les collections doivent avoir des tailles identiques. Si la fonction d'entrée est f et que les éléments sont i0...iN et j0...jN, cette fonction calcule f i0 j0 (...(f iN jN s)).

forall

O(N)

O(N)

O(N)

O(N)

O(N)

Teste si tous les éléments de la collection répondent au prédicat donné.

forall2

O(N)

O(N)

O(N)

-

-

Teste si tous les éléments correspondants de la collection répondent au prédicat donné par paire.

get / nth

O(1)

O(N)

O(N)

-

-

Retourne un élément de la collection à partir de son index.

head

-

O(1)

O(1)

-

-

Retourne le premier élément de la collection.

init

O(N)

O(N)

O(1)

-

-

Crée une collection à partir d´une dimension et d´une fonction de générateur pour calculer les éléments.

initInfinite

-

-

O(1)

-

-

Génère une nouvelle séquence qui, si elle est itérée, retournera des éléments consécutifs en appelant la fonction donnée.

intersect

-

-

-

-

O(log N * log M)

Calcule l'intersection de deux jeux.

intersectMany

-

-

-

-

O(N1 * N2 ...)

Calcule l'intersection d'une séquence de jeux. La séquence ne doit pas être vide.

IsEmpty

O(1)

O(1)

O(1)

O(1)

-

Retourne true si la collection est vide.

isProperSubset

-

-

-

-

O(M * log N)

Retourne true si tous les éléments du premier jeu figurent dans le second, et qu'au moins un élément du second jeu n'est pas dans le premier.

isProperSuperset

-

-

-

-

O(M * log N)

Retourne true si tous les éléments du second jeu figurent dans le premier, et qu'au moins un élément du premier jeu n'est pas dans le second.

isSubset

-

-

-

-

O(M * log N)

Retourne true si tous les éléments du premier jeu figurent dans le second.

isSuperset

-

-

-

-

O(M * log N)

Retourne true si tous les éléments du second jeu figurent dans le premier.

iter

O(N)

O(N)

O(N)

O(N)

O(N)

Applique la fonction donnée à chaque élément de la collection.

iteri

O(N)

O(N)

O(N)

-

-

Applique la fonction donnée à chaque élément de la collection. L' entier qui est passé à la fonction indique l'index de l'élément.

iteri2

O(N)

O(N)

-

-

-

Applique la fonction donnée à une paire d'éléments qui sont tirés d´indexes correspondants dans deux tableaux. Les entiers passés à la fonction indiquent l'index des éléments. Les deux tableaux doivent avoir la même longueur.

iter2

O(N)

O(N)

O(N)

-

-

Applique la fonction donnée à une paire d'éléments qui sont tirés d´indexes correspondants dans deux tableaux. Les deux tableaux doivent avoir la même longueur.

length

O(1)

O(N)

O(N)

-

-

Retourne le nombre d'éléments figurant dans la collection.

map

O(N)

O(N)

O(1)

-

-

Génère une collection dont les éléments sont les résultats de l'application de la fonction donnée à chacun des éléments du tableau.

map2

O(N)

O(N)

O(1)

-

-

Génère une collection dont les éléments sont les résultats de l'application de la fonction donnée aux éléments correspondants des deux collections. Les deux tableaux d'entrée doivent avoir la même longueur.

map3

-

O(N)

-

-

-

Génère une collection dont les éléments sont les résultats de l'application de la fonction donnée aux éléments correspondants des trois collections simultanément.

mapi

O(N)

O(N)

O(N)

-

-

Génère un tableau dont les éléments sont les résultats de l'application de la fonction donnée à chacun des éléments du tableau. L'index d'entiers passé à la fonction indique l'index de l'élément en cours de transformation.

mapi2

O(N)

O(N)

-

-

-

Génère une collection dont les éléments sont les résultats de l'application de la fonction donnée aux éléments correspondants des deux collections, en passant également l'index des éléments. Les deux tableaux d'entrée doivent avoir la même longueur.

max

O(N)

O(N)

O(N)

-

-

Retourne le plus grand élément dans la collection, comparé à l'aide de l'opérateur max .

maxBy

O(N)

O(N)

O(N)

-

-

Retourne le plus grand élément dans la collection, comparé à l'aide de max sur le résultat de la fonction.

maxElement

-

-

-

-

O(log N)

Retourne le plus grand élément du jeu selon l'ordre utilisé pour le jeu.

min

O(N)

O(N)

O(N)

-

-

Retourne le plus petit élément dans la collection, comparé à l'aide de l'opérateur min .

minBy

O(N)

O(N)

O(N)

-

-

Retourne le plus petit élément dans la collection, comparé à l'aide de l'opérateur min sur le résultat de la fonction.

minElement

-

-

-

-

O(log N)

Retourne l'élément le plus bas du jeu selon l'ordre utilisé pour le jeu.

ofArray

-

O(N)

O(1)

O(N)

O(N)

Crée une collection qui contient les mêmes éléments que ceux du tableau donné.

ofList

O(N)

-

O(1)

O(N)

O(N)

Crée une collection qui contient les mêmes éléments que ceux de la liste donnée.

ofSeq

O(N)

O(N)

-

O(N)

O(N)

Crée une collection qui contient les mêmes éléments que ceux de la séquence donnée.

pairwise

-

-

O(N)

-

-

Retourne une séquence de chaque élément dans la séquence d'entrée et sa prédécesseur, à l'exception du premier élément qui est uniquement retourné comme prédécesseur du deuxième élément.

partition

O(N)

O(N)

-

O(N)

O(N)

Fractionne la collection en deux collections. La première collection contient les éléments pour lesquels le prédicat donné retourne true, et la deuxième collection contient les éléments pour lesquels le prédicat donné retourne false.

permute

O(N)

O(N)

-

-

-

Retourne un tableau de tous les éléments permutés en fonction de la permutation spécifiée.

pick

O(N)

O(N)

O(N)

O(log N)

-

Applique la fonction donnée à des éléments consécutifs, en retournant le premier résultat où la fonction retourne Some. Si la fonction ne retourne jamais Some,KeyNotFoundException est alors levée.

readonly

-

-

O(N)

-

-

Crée un objet de séquence qui délègue à l'objet de séquence donné. Cette opération garantit qu´un cast de type ne peut pas redécouvrir et modifier la séqence originale. Par exemple, si pour un tableau spécifique, la séquence retournée retournera les éléments de ce tableau, mais vous ne pourrez pas effectuer un cast de l'objet de séquence retourné en un tableau.

reduce

O(N)

O(N)

O(N)

-

-

Applique une fonction à chaque élément de la collection, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Cette fonction commence par l'application de la fonction aux deux premiers éléments, passe ce résultat dans la fonction avec le troisième élément, et ainsi de suite. La fonction retourne le résultat final.

reduceBack

O(N)

O(N)

-

-

-

Applique une fonction à chaque élément de la collection, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Si la fonction d'entrée est f et que les éléments sont i0...iN, cette fonction calcule f i0 (...(f iN-1 iN)).

remove

-

-

-

O(log N)

O(log N)

Supprime un élément du domaine du mappage. Aucune exception n'est levée si l'élément n'est pas présent.

replicate

-

O(N)

-

-

-

Crée une liste d'une longueur spécifiée avec chaque élément défini sur la valeur donnée.

rev

O(N)

O(N)

-

-

-

Retourne une nouvelle liste avec les éléments dans l'ordre inverse.

scan

O(N)

O(N)

O(N)

-

-

Applique une fonction à chaque élément de la collection, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Cette opération appliquela fonction au second argument ainsi qu'au premier élément de la liste. Cette opération passe ensuite ce résultat dans la fonction avec le deuxième élément et ainsi de suite. Enfin, l´opération retourne la liste des résultats intermédiaires et le résultat final.

scanBack

O(N)

O(N)

-

-

-

Ressemble à l'exécution rabattable mais retourne à la fois l'intermédiaire et les résultats finaux.

singleton

-

-

O(1)

-

O(1)

Retourne une séquence qui produit uniquement un élément.

set

O(1)

-

-

-

-

Définit un élément dans un tableau avec la valeur spécifiée.

skip

-

-

O(N)

-

-

Retourne une séquence qui ignore N éléments de la séquence sous-jacente, puis produit les éléments restants de la séquence.

skipWhile

-

-

O(N)

-

-

Retourne une séquence qui, lorsqu'elle est itérée, ignore les éléments de la séquence sous-jacente lorsque le prédicat donné retourne la valeur true, puis produit les éléments restants de la séquence.

sort

Moyenne de O(N log N)

Pire des cas de O (N^2 )

O(N log N)

O(N log N)

-

-

Trie la collection par valeur d'élément. Les éléments sont comparés en utilisant compare.

sortBy

Moyenne de O(N log N)

Pire des cas de O (N^2 )

O(N log N)

O(N log N)

-

-

Trie la liste donnée à l'aide de clés que la projection donnée fournit. Les clés sont comparées à l'aide compare.

sortInPlace

Moyenne de O(N log N)

Pire des cas de O (N^2 )

-

-

-

-

Trie les éléments d'un tableau en faisant muter le tableau sur place et à l'aide de la fonction de comparaison donnée. Les éléments sont comparés en utilisant compare.

sortInPlaceBy

Moyenne de O(N log N)

Pire des cas de O (N^2 )

-

-

-

-

Trie les éléments d'un tableau en faisant muter le tableau sur place et à l'aide de la projection donnée pour les clés. Les éléments sont comparés en utilisant compare.

sortInPlaceWith

Moyenne de O(N log N)

Pire des cas de O (N^2 )

-

-

-

-

Trie les éléments d'un tableau en faisant muter le tableau sur place et en appliquant l'ordre obtenu par la fonction de comparaison donnée.

sortWith

Moyenne de O(N log N)

Pire des cas de O (N^2 )

O(N log N)

-

-

-

Trie les éléments d'une collection en appliquant l'ordre obtenu par la fonction de comparaison donnée et en retournant une nouvelle collection.

sub

O(N)

-

-

-

-

Génère un tableau qui contient la sous-plage donnée qui est spécifiée par l'index de départ et la longueur.

sum

O(N)

O(N)

O(N)

-

-

Retourne la somme des éléments dans la collection.

sumBy

O(N)

O(N)

O(N)

-

-

Retourne la somme des résultats qui sont générés en appliquant la fonction à chaque élément de la collection.

tail

-

O(1)

-

-

-

Retourne la liste sans son premier élément.

take

-

-

O(N)

-

-

Retourne les éléments de la séquence jusqu'à un nombre spécifié.

takeWhile

-

-

O(1)

-

-

Retourne une séquence qui, lorsqu'elle est itérée, produit les éléments de la séquence sous-jacente lorsque le prédicat donné retourne la valeur true et ne retourne ensuite aucun élément supplémentaire.

toArray

-

O(N)

O(N)

O(N)

O(N)

Crée un tableau à partir de la collection donnée.

toList

O(N)

-

O(N)

O(N)

O(N)

Crée une liste à partir de la collection donnée.

toSeq

O(1)

O(1)

-

O(1)

O(1)

Crée une séquence à partir de la collection donnée.

truncate

-

-

O(1)

-

-

Retourne une séquence qui, en cas d'énumération, retourne pas plus que N éléments.

tryFind

O(N)

O(N)

O(N)

O(log N)

-

Recherche un élément qui répond à un prédicat donné.

tryFindIndex

O(N)

O(N)

O(N)

-

-

Recherche le premier élément qui répond à un prédicat donné et retourne l'index de l'élément correspondant, ou None s'il n'existe aucun élément.

tryFindKey

-

-

-

O(log N)

-

Retourne la clé du premier mappage dans la collection qui répond au prédicat donné ou retourne None si aucun élément de ce type n'existe.

tryPick

O(N)

O(N)

O(N)

O(log N)

-

Applique la fonction donnée à des éléments consécutifs, en retournant le premier résultat où la fonction retourne Some pour une valeur. En l'absence d'élément de ce type, l´opération retourne None.

unfold

-

-

O(N)

-

-

Retourne une séquence qui contient les éléments que le calcul donné génère.

union

-

-

-

-

O(M * log N)

Calcule l'union des deux jeux.

unionMany

-

-

-

-

O(N1 * N2 ...)

Calcule l'union d'une séquence de jeux.

unzip

O(N)

O(N)

O(N)

-

-

Fractionne une liste de paires en deux listes.

unzip3

O(N)

O(N)

O(N)

-

-

Fractionne une liste de triples en trois listes.

windowed

-

-

O(N)

-

-

Retourne une séquence qui produit des fenêtres défilantes d'éléments conteneurs provenant de la séquence d'entrée. Chaque fenêtre est retournée sous la forme d'un nouveau tableau.

zip

O(N)

O(N)

O(N)

-

-

Combine les deux collections dans une liste de paires. Ces deux listes doivent avoir la même longueur.

zip3

O(N)

O(N)

O(N)

-

-

Combine les trois collections en une liste de triples. Ces trois listes doivent avoir la même longueur.

Voir aussi

Autres ressources

Types F#

Référence du langage F#