Tipi di raccolta F#
Rivedendo questo argomento, è possibile determinare il più adatto al tipo di libreria F# indica un particolare necessario.Questi tipi di raccolte diversi dai tipi di raccolta in .NET Framework, ad esempio quelli nello spazio dei nomi System.Collections.Generic, in quanto i tipi di libreria F# sono progettati da una prospettiva di programmazione funzionale anziché una prospettiva orientata a oggetti.In particolare, solo la raccolta di matrice contiene elementi modificabili.Pertanto, quando si modifica una raccolta, creare un'istanza della raccolta modificata anziché modifica della raccolta originale.
I tipi di raccolta differiscono nel tipo di struttura di dati in cui gli oggetti archiviati.Strutture di dati come tabelle hash, elenchi collegati e le matrici presentano le caratteristiche di prestazione diversi e un set diverso di operazioni disponibili.
Tipi di libreria F#
Nella tabella seguente sono illustrati i tipi di raccolta F#.
Type |
Descrizione |
Collegamenti correlati |
---|---|---|
Una serie ordinata e non modificabile di elementi dello stesso tipo.Implementato come elenchi collegati. |
||
Una raccolta a dimensione fissa, in base zero, modificabile di elementi dati consecutivi dello stesso tipo. |
||
Una serie logica di elementi in un qualsiasi tipo.Le sequenze risultano particolarmente utili quando è di grandi dimensioni, raccolta di dati ordinata ma non si prevede di utilizzare necessariamente tutti gli elementi.I singoli elementi della sequenza vengono calcolati solo se necessario, pertanto una sequenza può risultare più efficace di un elenco se non tutti gli elementi viene utilizzato.Le sequenze sono rappresentate dal tipo di seq<'t>, un alias per IEnumerable<T>.Qualsiasi tipo .NET Framework che implementa IEnumerable<T> può essere pertanto utilizzato come sequenza. |
||
Un dizionario non modificabile di elementi.Gli elementi sono accessibili dalla chiave. |
||
Un set non modificabile basato sulle strutture ad albero binarie, in cui il confronto è la funzione di confronto strutturale F#, che potenzialmente le implementazioni di interfaccia IComparable sui valori della chiave. |
Tabella di funzioni
In questa sezione vengono confrontate le funzioni disponibili nei tipi di raccolte F#.La complessità computazionale di funzione viene fornita, dove N è la dimensione della prima raccolta e m. è la dimensione della seconda raccolta, se disponibile.Un trattino (-) indica che questa funzione non è disponibile nella raccolta.Poiché le sequenze vengono valutate in modo differito, una funzione come Seq.distinct può essere O (1) perché restituisce immediatamente, sebbene impatto sulle prestazioni della sequenza una volta enumerata.
Funzione |
Matrice |
Elenco |
Sequence |
Mappa |
Set |
Descrizione |
---|---|---|---|---|---|---|
append |
OR (M) |
OR (N) |
OR (N) |
- |
- |
Restituisce una nuova raccolta contenente gli elementi della prima raccolta seguiti dagli elementi della seconda raccolta. |
aggiunta |
- |
- |
- |
O (log N) |
O (log N) |
Restituisce una nuova raccolta con l'elemento aggiunto. |
average |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce la media degli elementi nella raccolta. |
averageBy |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce la media dei risultati della funzione svolta applicata a ogni elemento. |
blit |
OR (N) |
- |
- |
- |
- |
Copia una sezione di una matrice. |
cache |
- |
- |
OR (N) |
- |
- |
Calcoli e voci di file di una sequenza. |
cast |
- |
- |
OR (N) |
- |
- |
Converte gli elementi al tipo specificato. |
choose |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica la funzione specificata f a ogni elemento x dell'elenco.Restituisce l'elenco contenente i risultati per ogni elemento in cui la funzione restituisce Some(f(x)). |
collect |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica la funzione specificata a ogni elemento della raccolta, concatena tutti i risultati e restituisce l'elenco combinato. |
compareWith |
- |
- |
OR (N) |
- |
- |
Confronta due sequenze tramite la funzione di confronto specificata, elemento per elemento. |
concat |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Combina l'enumerazione di enumerazioni specificata come singola enumerazione concatenata. |
contains |
- |
- |
- |
- |
O (log N) |
Restituisce true se il set contiene l'elemento specificato. |
containsKey |
- |
- |
- |
O (log N) |
- |
Verifica se un elemento è nel dominio di una mappa. |
Conteggio |
- |
- |
- |
- |
OR (N) |
Restituisce il numero di elementi nel set. |
countBy |
- |
- |
OR (N) |
- |
- |
Applica una funzione di generazione chiavi a ogni elemento di una sequenza e restituisce una sequenza che produce chiavi univoche e il relativo numero di occorrenze della sequenza originale. |
copy |
OR (N) |
- |
OR (N) |
- |
- |
Copia la raccolta. |
create |
OR (N) |
- |
- |
- |
- |
Crea una matrice di interi elementi che corrispondono inizialmente al valore specificato. |
delay |
- |
- |
o (1) |
- |
- |
Restituisce una sequenza compilata dalla specifica ritardata indicata di una sequenza. |
difference |
- |
- |
- |
- |
O (m. * log N) |
Restituisce un nuovo set con gli elementi del secondo set rimossi dal primo set. |
distinct |
o (1)* |
Restituisce una sequenza che non contiene voci duplicate in base all'hash generico e ai confronti di uguaglianze nelle voci.Se un elemento è presente più volte nella sequenza, le occorrenze successive vengono ignorate. |
||||
distinctBy |
o (1)* |
Restituisce una sequenza che non contiene voci duplicate in base all'hash generico e ai confronti di uguaglianze nelle chiavi che la funzione di generazione chiavi specificata restituisce.Se un elemento è presente più volte nella sequenza, le occorrenze successive vengono ignorate. |
||||
empty |
o (1) |
o (1) |
o (1) |
o (1) |
o (1) |
Crea una raccolta vuota. |
exists |
OR (N) |
OR (N) |
OR (N) |
O (log N) |
O (log N) |
Verifica se eventuali elementi della sequenza soddisfano il predicato specificato. |
exists2 |
(Min o (N, M)) |
- |
(Min o (N, M)) |
Verifica se una qualsiasi coppia di elementi corrispondenti delle sequenze di input soddisfa il predicato specificato. |
||
fill |
OR (N) |
Imposta un intervallo di elementi della matrice al valore specificato. |
||||
filter |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
Restituisce una nuova raccolta che contiene solo gli elementi della raccolta per cui la truedi predicato specificato. |
find |
OR (N) |
OR (N) |
OR (N) |
O (log N) |
- |
Restituisce il primo elemento per cui la funzione specificata restituisce true.Se tale elemento non esiste, restituisce KeyNotFoundException. |
findIndex |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce l'indice del primo elemento nella matrice che soddisfa il predicato specificato.Genera KeyNotFoundException se nessun elemento soddisfa il predicato. |
findKey |
- |
- |
- |
O (log N) |
- |
Restituisce la funzione per ogni mapping della raccolta e restituisce la chiave per il primo mapping in cui la funzione restituisce true.Se tale elemento non esiste, viene generata questa funzione KeyNotFoundException. |
fold |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
Applica una funzione a ogni elemento della raccolta, eseguendo il threading di un argomento di accumulatore attraverso il calcolo.Se la funzione di input è f e gli elementi sono i0… in, calcoli f di questa funzione (…(f o i0)…) in. |
fold2 |
OR (N) |
OR (N) |
- |
- |
- |
Applica una funzione agli elementi corrispondenti di due raccolte, eseguendo il threading di un argomento dell'accumulatore attraverso il calcolo.Le dimensioni delle raccolte devono coincidere.Se la funzione di input è f e gli elementi sono… jN i0… in e j0, calcoli f di questa funzione (…(f s i0 j0)...) iN jN. |
foldBack |
OR (N) |
OR (N) |
- |
OR (N) |
OR (N) |
Applica una funzione a ogni elemento della raccolta, eseguendo il threading di un argomento di accumulatore attraverso il calcolo.Se la funzione di input è f e gli elementi sono i0… in, calcoli f i0 di questa funzione (… (f s). |
foldBack2 |
OR (N) |
OR (N) |
- |
- |
- |
Applica una funzione agli elementi corrispondenti di due raccolte, eseguendo il threading di un argomento dell'accumulatore attraverso il calcolo.Le dimensioni delle raccolte devono coincidere.Se la funzione di input è f e gli elementi sono… jN i0… in e j0, calcoli f i0 j0 di questa funzione (… (f in jN s). |
forall |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
Verifica se tutti gli elementi della raccolta soddisfano il predicato specificato. |
forall2 |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Verifica se tutti gli elementi corrispondenti della raccolta soddisfano il predicato specificato pairwise. |
ottenere/l'no |
o (1) |
OR (N) |
OR (N) |
- |
- |
Restituisce un elemento dalla raccolta fornita dal relativo indice. |
head |
- |
o (1) |
o (1) |
- |
- |
Restituisce il primo elemento della raccolta. |
init |
OR (N) |
OR (N) |
o (1) |
- |
- |
Crea una raccolta fornita la dimensione e una funzione del generatore per calcolare gli elementi. |
initInfinite |
- |
- |
o (1) |
- |
- |
Genera una sequenza che, se iterata, elementi successivi viene restituito chiamando la funzione specificata. |
intersect |
- |
- |
- |
- |
O (log N log M *) |
Calcola l'intersezione di due set. |
intersectMany |
- |
- |
- |
- |
OR (N1 * N2…) |
Calcola l'intersezione di una sequenza di set.La sequenza non deve essere vuota. |
isEmpty |
o (1) |
o (1) |
o (1) |
o (1) |
- |
Restituisce true se la raccolta è vuota. |
isProperSubset |
- |
- |
- |
- |
O (m. * log N) |
Restituisce true se tutti gli elementi del primo set sono presenti nel secondo set e almeno un elemento del secondo set non è in primo set. |
isProperSuperset |
- |
- |
- |
- |
O (m. * log N) |
Restituisce true se tutti gli elementi del secondo set sono presenti nell'impostare in e almeno un elemento del primo set non è nel secondo gruppo. |
isSubset |
- |
- |
- |
- |
O (m. * log N) |
Restituisce true se tutti gli elementi del primo set sono presenti nel secondo gruppo. |
isSuperset |
- |
- |
- |
- |
O (m. * log N) |
Restituisce true se tutti gli elementi del secondo set sono presenti nel primo set. |
iter |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
Applica la funzione specificata a ogni elemento della raccolta. |
iteri |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica la funzione specificata a ogni elemento della raccolta.L'integer passato alla funzione indica l'indice dell'elemento. |
iteri2 |
OR (N) |
OR (N) |
- |
- |
- |
Applica la funzione specificata a una coppia di elementi disegnati dagli indici corrispondenti di due matrici.L'integer passato alla funzione indica l'indice degli elementi.Le due matrici deve avere la stessa lunghezza. |
iter2 |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica la funzione specificata a una coppia di elementi disegnati dagli indici corrispondenti di due matrici.Le due matrici deve avere la stessa lunghezza. |
length |
o (1) |
OR (N) |
OR (N) |
- |
- |
Restituisce il numero di elementi nella raccolta. |
map |
OR (N) |
OR (N) |
o (1) |
- |
- |
Compila una raccolta i cui elementi sono il risultato ottenuto applicando la funzione specificata a ogni elemento della matrice. |
map2 |
OR (N) |
OR (N) |
o (1) |
- |
- |
Compila una raccolta i cui elementi sono il risultato ottenuto applicando la funzione specificata agli elementi corrispondenti delle due raccolte pairwise.Le due matrici di input deve avere la stessa lunghezza. |
map3 |
- |
OR (N) |
- |
- |
- |
Compila una raccolta i cui elementi sono il risultato ottenuto applicando la funzione specificata agli elementi corrispondenti delle tre raccolte contemporaneamente. |
mapi |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Compila una matrice i cui elementi sono il risultato ottenuto applicando la funzione specificata a ogni elemento della matrice.L'indice Integer passato alla funzione indica l'indice dell'elemento che viene trasformato. |
mapi2 |
OR (N) |
OR (N) |
- |
- |
- |
Compila una raccolta i cui elementi sono il risultato ottenuto applicando la funzione specificata agli elementi corrispondenti delle due raccolte pairwise, nonché passando l'indice degli elementi.Le due matrici di input deve avere la stessa lunghezza. |
max |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce il maggiore elemento della raccolta, confrontata con l'operatore massimo. |
maxBy |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce il maggiore elemento della raccolta, confrontata con massimo nel risultato della funzione. |
maxElement |
- |
- |
- |
- |
O (log N) |
Restituisce il maggiore elemento del set in base all'ordine utilizzato per il set. |
min |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce il minore elemento della raccolta, confrontata con l'operatore min. |
minBy |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce il minore elemento della raccolta, confrontata con l'operatore min nel risultato della funzione. |
minElement |
- |
- |
- |
- |
O (log N) |
Restituisce l'elemento inferiore del set in base all'ordine utilizzato per il set. |
ofArray |
- |
OR (N) |
o (1) |
OR (N) |
OR (N) |
Crea una raccolta che contiene gli stessi elementi della matrice specificata. |
ofList |
OR (N) |
- |
o (1) |
OR (N) |
OR (N) |
Crea una raccolta che contiene gli stessi elementi dell'elenco specificato. |
ofSeq |
OR (N) |
OR (N) |
- |
OR (N) |
OR (N) |
Crea una raccolta che contiene gli stessi elementi della sequenza specificata. |
pairwise |
- |
- |
OR (N) |
- |
- |
Restituisce una sequenza di ogni elemento nella sequenza di input e del relativo predecessore ad eccezione del primo elemento, che viene restituito solo come predecessore del secondo elemento. |
partizione |
OR (N) |
OR (N) |
- |
OR (N) |
OR (N) |
Divide la raccolta specificata in due raccolte.La prima raccolta contiene gli elementi per i quali il truedi predicato specificato e la seconda raccolta contiene gli elementi per i quali il falsedi predicato specificato. |
permute |
OR (N) |
OR (N) |
- |
- |
- |
Restituisce una matrice con tutti gli elementi permutati secondo la permutazione specificata. |
pick |
OR (N) |
OR (N) |
OR (N) |
O (log N) |
- |
Applica la funzione specificata a elementi consecutivi, restituendo il primo risultato in cui la funzione restituisce some.Se la funzione non restituisce mai alcuni, KeyNotFoundException viene generato. |
readonly |
- |
- |
OR (N) |
- |
- |
Crea un oggetto sequenza che delega all'oggetto sequenza specificato.Questa operazione garantisce che un cast di tipo non può riscoprire e sottoposta a una modifica la sequenza originale.Ad esempio, per una matrice, la sequenza restituita restituirà gli elementi della matrice, ma non è possibile eseguire il cast dell'oggetto sequenza restituito in una matrice. |
reduce |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica una funzione a ogni elemento della raccolta, eseguendo il threading di un argomento di accumulatore attraverso il calcolo.Questa funzione inizia applicando la funzione ai primi due elementi, passa il risultato della funzione con il terzo elemento, e così via.La funzione restituisce il risultato finale. |
reduceBack |
OR (N) |
OR (N) |
- |
- |
- |
Applica una funzione a ogni elemento della raccolta, eseguendo il threading di un argomento di accumulatore attraverso il calcolo.Se la funzione di input è f e gli elementi sono i0… in, calcoli f i0 di questa funzione (… (f iN-1 in). |
remove |
- |
- |
- |
O (log N) |
O (log N) |
Rimuove un elemento dal dominio della mappa.Non viene generata alcuna eccezione se l'elemento non è presente. |
replicate |
- |
OR (N) |
- |
- |
- |
Consente di creare un elenco di una lunghezza specificata con ogni insieme di elementi al valore fornito. |
rev |
OR (N) |
OR (N) |
- |
- |
- |
Restituisce un nuovo elenco con gli elementi in ordine inverso. |
scan |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Applica una funzione a ogni elemento della raccolta, eseguendo il threading di un argomento di accumulatore attraverso il calcolo.Questa operazione si applica la funzione al secondo argomento e il primo elemento dell'elenco.L'operazione quindi passa il risultato della funzione con il secondo elemento e così via.Infine, l'operazione restituisce l'elenco di risultati intermedi e il risultato finale. |
scanBack |
OR (N) |
OR (N) |
- |
- |
- |
È simile all'operazione in caso di replica dei ma restituisce sia possibile che i risultati finali. |
singleton |
- |
- |
o (1) |
- |
o (1) |
Restituisce una sequenza che produce un solo elemento. |
set |
o (1) |
- |
- |
- |
- |
Imposta un elemento di una matrice al valore specificato. |
skip |
- |
- |
OR (N) |
- |
- |
Restituisce una sequenza che ignora N elementi della sequenza sottostante e restituisce gli elementi rimanenti della sequenza. |
skipWhile |
- |
- |
OR (N) |
- |
- |
Restituisce una sequenza che, se iterata, ignora gli elementi della sequenza sottostante mentre il predicato specificato restituisce true e produce quindi gli elementi rimanenti della sequenza. |
sort |
O (media del log N) (O) N^2 caso peggiore |
O (log N) |
O (log N) |
- |
- |
Ordina la raccolta mediante valore dell'elemento.Gli elementi vengono confrontati utilizzando confronti. |
sortBy |
O (media del log N) (O) N^2 caso peggiore |
O (log N) |
O (log N) |
- |
- |
Ordina l'elenco specificato utilizzando le chiavi che la proiezione specificata.Le chiavi vengono confrontate mediante confronti. |
sortInPlace |
O (media del log N) (O) N^2 caso peggiore |
- |
- |
- |
- |
Ordina gli elementi di una matrice la modifica sul posto e utilizzando la funzione di confronto specificata.Gli elementi vengono confrontati utilizzando confronti. |
sortInPlaceBy |
O (media del log N) (O) N^2 caso peggiore |
- |
- |
- |
- |
Ordina gli elementi di una matrice la modifica sul posto e tramite la proiezione specificata per le chiavi.Gli elementi vengono confrontati utilizzando confronti. |
sortInPlaceWith |
O (media del log N) (O) N^2 caso peggiore |
- |
- |
- |
- |
Ordina gli elementi di una matrice la modifica sul posto e utilizzando la funzione di confronto specificata come ordine. |
sortWith |
O (media del log N) (O) N^2 caso peggiore |
O (log N) |
- |
- |
- |
Ordina gli elementi di una raccolta, utilizzando la funzione di confronto specificata come ordine e restituire una nuova raccolta. |
sub |
OR (N) |
- |
- |
- |
- |
Compila una matrice contenente l'intervallo secondario fornito specificato dall'indice iniziale e la lunghezza. |
sum |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce la somma degli elementi nella raccolta. |
sumBy |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Restituisce la somma dei risultati generati applicando la funzione a ogni elemento della raccolta. |
tail |
- |
o (1) |
- |
- |
- |
Restituisce l'elenco senza il primo elemento. |
take |
- |
- |
OR (N) |
- |
- |
Restituisce gli elementi della sequenza fino a un conteggio specificato. |
takeWhile |
- |
- |
o (1) |
- |
- |
Restituisce una sequenza che, se iterata, produce gli elementi della sequenza sottostante mentre il predicato specificato restituisce true quindi non restituisce elementi. |
toArray |
- |
OR (N) |
OR (N) |
OR (N) |
OR (N) |
Consente di creare una matrice dalla raccolta fornita. |
toList |
OR (N) |
- |
OR (N) |
OR (N) |
OR (N) |
Consente di creare un elenco dalla raccolta fornita. |
toSeq |
o (1) |
o (1) |
- |
o (1) |
o (1) |
Crea una sequenza dalla raccolta specificata. |
truncate |
- |
- |
o (1) |
- |
- |
Restituisce una sequenza che, se enumerata, restituisce solo gli elementi N. |
tryFind |
OR (N) |
OR (N) |
OR (N) |
O (log N) |
- |
Cerca un elemento che soddisfa il predicato specificato. |
tryFindIndex |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Trova il primo elemento che soddisfa il predicato specificato e restituisce l'indice dell'elemento corrispondente, o None se tale elemento non esiste. |
tryFindKey |
- |
- |
- |
O (log N) |
- |
Restituisce la chiave del primo mapping della raccolta che soddisfa il predicato specificato o None se un tale elemento non esiste. |
tryPick |
OR (N) |
OR (N) |
OR (N) |
O (log N) |
- |
Applica la funzione specificata a elementi consecutivi, restituendo il primo risultato in cui la funzione restituisce Some per un determinato valore.Se l'elemento non esiste, l'operazione restituisce None. |
unfold |
- |
- |
OR (N) |
- |
- |
Restituisce una sequenza che contiene gli elementi che il calcolo specificato generato. |
union |
- |
- |
- |
- |
O (m. * log N) |
Calcola l'unione dei due set. |
unionMany |
- |
- |
- |
- |
OR (N1 * N2…) |
Calcola l'unione di una sequenza di set. |
unzip |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Suddivide un elenco di coppie in due elenchi. |
unzip3 |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Divide un elenco di triple in tre elenchi. |
windowed |
- |
- |
OR (N) |
- |
- |
Restituisce una sequenza che produce finestre degli elementi contenitore che sono ricavati dalla sequenza di input.Ogni finestra viene restituita come matrice aggiornata. |
zip |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Combina due raccolte in un elenco di coppie.Le lunghezze dei due elenchi devono coincidere. |
zip3 |
OR (N) |
OR (N) |
OR (N) |
- |
- |
Combina le tre raccolte in un elenco di tripli.Le lunghezze degli elenchi devono coincidere. |