Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Tipi di raccolta F#

Rivedendo questo argomento, è possibile determinare quale tipo di collezione F# risponde meglio ad una particolare necessità. 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.

Nella tabella seguente sono illustrati i tipi di raccolta F#.

Tipo

Descrizione

Collegamenti correlati

Elenco

Una serie ordinata e non modificabile di elementi dello stesso tipo. Implementato come elenchi collegati.

Elenchi (F#)

Modulo di elenco

Matrice

Una raccolta a dimensione fissa, in base zero, modificabile di elementi dati consecutivi dello stesso tipo.

Matrici (F#)

Modulo della matrice

Modulo di Array2D

Modulo di Array3D

seq

Una serie logica di elementi in un qualsiasi tipo. Le sequenze risultano particolarmente utili quando si ha una raccolta di dati di grandi dimensioni e 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 una lista se non tutti gli elementi sono utilizzati. Le sequenze sono rappresentate dal tipo di seq<'t>, un alias per IEnumerable<T>. Pertanto, qualsiasi tipo .NET Framework che implementa IEnumerable<T> può essere utilizzato come sequenza.

Sequenze (F#)

Modulo seguente

Mappa

Un dizionario non modificabile di elementi. Gli elementi sono accessibili dalla chiave.

Modulo map

Set

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.

Impostare il modulo

Hh967652.collapse_all(it-it,VS.120).gifTabella 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.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft