Sdílet prostřednictvím


Typy kolekcí F#

Toto téma můžete určit, F# kolekce typ, který nejlépe vyhovuje konkrétní potřeby.Tyto typy kolekcí liší typy kolekcí v rozhraní.NET Framework, například v System.Collections.Generic oboru názvů, že z hlediska funkčnosti programování než objektově orientované perspektivy jsou určeny typy kolekcí F#.Konkrétně má pouze pole kolekce proměnlivých prvků.Proto při změně kolekce vytvořit instanci upravené kolekce místo původních změnila.

Typy kolekcí se liší také typ datové struktury, ve kterém jsou uloženy objekty.Datové struktury tabulky hash, propojené seznamy a pole mají různé charakteristiky a sadu dostupných operací.

Typy kolekcí F#

Následující tabulka uvádí typy kolekcí F#.

Type

Description

Související odkazy

Seznam

Uspořádaný, neměnná řadu prvků stejného typu.Implementován jako propojeného seznamu.

Seznamy (F#)

Seznam modulu

Pole

Kolekce pevné velikosti, od nuly, proměnlivých dat po sobě následujících prvků, které jsou stejného typu.

Pole (F#)

Modul Array

Modul Array2D

Modul Array3D

SEQ

Logické řady prvků, které jsou všechny jednoho typu.Posloupnosti jsou zvláště užitečné, když máte velký, objednané kolekce dat, ale Nečekejte nemusí použít všechny prvky.Jednotlivé prvky jsou počítány pouze jako posloupnost povinné, tak posloupnosti lze provádět lepší přehled, pokud nejsou všechny prvky jsou použity.Číselné řady jsou zastoupeny seq <'T> typ, který je alias IEnumerable <T>.Proto libovolný typ rozhraní.NET Framework, který implementuje IEnumerable lze použít jako sekvenci.

Sekvence (F#)

SEQ modul

Mapa

Neměnná slovník prvků.Prvky jsou dostupné klíče.

Modul mapy

Nastavit

Neměnná sadu, založené na binární stromy, kde je porovnání funkce F# strukturální porovnání, který používá potenciálně implementace IComparable rozhraní hodnot klíče.

Nastavit modul

Funkce tabulky

Tento oddíl porovnává funkce, které jsou k dispozici v kolekci typy F#.Výpočetní složitost funkce je uveden, kde n je velikost první kolekce a m je velikost druhá kolekce případné.Pomlčka (-) znamená, že tato funkce není k dispozici v kolekci.Protože vyhodnoceny pomalu plující sekvencí, funkci, například Seq.distinct může být O(1) vrátí okamžitě, přestože stále ovlivňuje výkon sekvence při výčtu.

Function

Pole

Seznam

Sekvence

Mapa

Nastavit

Description

připojit

O(M)

O(N)

O(N)

-

-

Vrátí novou kolekci, která obsahuje prvky první kolekce, následuje druhá kolekce prvků.

Přidat

-

-

-

O (protokol N)

O (protokol N)

Vrátí nové kolekce s prvek přidaný.

průměr

O(N)

O(N)

O(N)

-

-

Vrátí průměr prvků v kolekci.

averageBy

O(N)

O(N)

O(N)

-

-

Vrátí průměr výsledků poskytované funkce pro každý prvek.

vyplnění plochy přenosem

O(N)

-

-

-

-

Zkopíruje části pole.

mezipaměť

-

-

O(N)

-

-

Vypočítá a ukládá prvky sekvence.

osazení

-

-

O(N)

-

-

Převede prvky zadaného typu.

Zvolte

O(N)

O(N)

O(N)

-

-

Použije dané funkce f pro každý prvek x seznamu.Vrátí seznam, který obsahuje výsledky pro každý prvek, kde vrátí funkce Some(f(x)).

shromáždění

O(N)

O(N)

O(N)

-

-

Každý prvek kolekce se týká dané funkce, spojuje všechny výsledky a vrátí sloučeného seznamu.

compareWith

-

-

O(N)

-

-

Pomocí funkce porovnání daný element po elementu, porovnává dvě sekvence.

concat

O(N)

O(N)

O(N)

-

-

Kombinuje daného výčtu z výčtech jako jediný sloučeném výčtu.

obsahuje

-

-

-

-

O (protokol N)

Vrátí hodnotu true Pokud sada obsahuje zadaný prvek.

containsKey

-

-

-

O (protokol N)

-

Testuje, zda je prvek v doméně mapy.

počet

-

-

-

-

O(N)

Vrátí počet prvků v sadě.

countBy

-

-

O(N)

-

-

Platí pro každý prvek posloupnost funkci generování klíče a vrátí číselné řady, která vede jedinečné klíče a jejich počet výskytů v původním pořadí.

Kopírovat

O(N)

-

O(N)

-

-

Zkopíruje kolekce.

vytvořit

O(N)

-

-

-

-

Vytvoří pole celé prvky, které jsou zpočátku všechny dané hodnoty.

zpoždění

-

-

O(1)

-

-

Vrátí číselné řady, který je součástí dané zpožděné specifikace sekvence.

rozdíl

-

-

-

-

O (M * N protokolu)

Vrátí sadu nové prvky druhá sada z první sada.

odlišné

O(1) *

Vrátí pořadí podle obecného porovnání hash a rovnosti v položkách žádné duplicitní položky.Pokud prvek v pořadí výskytu vícekrát vyšší počet výskytů jsou zahozeny.

distinctBy

O(1) *

Vrátí pořadí žádné duplicitní položky podle obecného hash a rovnosti porovnání klíčů, které vrátí funkce dané generování klíče.Pokud prvek v pořadí výskytu vícekrát vyšší počet výskytů jsou zahozeny.

prázdné

O(1)

O(1)

O(1)

O(1)

O(1)

Vytvoří prázdnou kolekci.

existuje

O(N)

O(N)

O(N)

O (protokol N)

O (protokol N)

Ověřuje, zda splňuje z pořadí prvků daného predikátu.

exists2

O(min(N,M))

-

O(min(N,M))

Testuje všechny dvojice odpovídajících prvků vstupní sekvence splňuje dané predikátu.

výplň

O(N)

Nastaví rozsah prvky pole dané hodnoty.

Filtr

O(N)

O(N)

O(N)

O(N)

O(N)

Vrátí novou kolekci, která obsahuje prvky kolekce, které vrátí dané predikát true.

Najít

O(N)

O(N)

O(N)

O (protokol N)

-

Vrátí první prvek, pro který dané funkce vrátí true.Vrátí KeyNotFoundException Pokud neexistuje žádný takový prvek.

findIndex

O(N)

O(N)

O(N)

-

-

Vrátí index prvního prvku matice, která splňuje dané predikátu.Vyvolává KeyNotFoundException Pokud žádný prvek splňuje predikátu.

findKey

-

-

-

O (protokol N)

-

Vyhodnotí funkci na každé mapování v kolekci a vrátí klíč pro první mapování, kde vrátí funkce true.Pokud neexistuje žádný takový prvek, tato funkce zvyšuje KeyNotFoundException.

Skládání

O(N)

O(N)

O(N)

O(N)

O(N)

Funkce se vztahuje na každý prvek kolekce threading argument akumulátorové prostřednictvím výpočtu.Pokud je vstupní funkce f a i0... V jsou prvky, tato funkce vypočítá f (...)(f s i0)...) V.

fold2

O(N)

O(N)

-

-

-

Použije funkci odpovídajících prvků dvou kolekcí, threading argument akumulátorové prostřednictvím výpočtu.Kolekce musí mít stejné velikosti.Pokud je vstupní funkce f a prvky jsou i0... V a j0... jN tato funkce vypočítá f (...)(f s i0 j0)...) V jN.

foldBack

O(N)

O(N)

-

O(N)

O(N)

Funkce se vztahuje na každý prvek kolekce threading argument akumulátorové prostřednictvím výpočtu.Pokud je vstupní funkce f a i0... V jsou prvky, tato funkce vypočítá f i0 (...)(f v s)).

foldBack2

O(N)

O(N)

-

-

-

Použije funkci odpovídajících prvků dvou kolekcí, threading argument akumulátorové prostřednictvím výpočtu.Kolekce musí mít stejné velikosti.Pokud je vstupní funkce f a prvky jsou i0... V a j0... jN tato funkce vypočítá f i0 j0 (...)(f v jN s)).

forall

O(N)

O(N)

O(N)

O(N)

O(N)

Testuje všechny prvky kolekce splňují dané predikátu.

forall2

O(N)

O(N)

O(N)

-

-

Ověřuje, zda splňují všechny odpovídající prvky kolekce predikát dané skupině.

získat / n-tý

O(1)

O(N)

O(N)

-

-

Vrátí prvek z kolekce uvedena její index.

hlava

-

O(1)

O(1)

-

-

Vrátí první prvek v kolekci.

init

O(N)

O(N)

O(1)

-

-

Vytvoří kolekci dimenze a Generátor funkce vypočítat prvky.

initInfinite

-

-

O(1)

-

-

Generuje sekvenci, při vstupní, vrátí po sobě následujících prvků voláním dané funkce.

průnik

-

-

-

-

O (protokolu N * log M)

Vypočítá průsečíku dvou sad.

intersectMany

-

-

-

-

O (N1 * N2...)

Vypočítá průsečík posloupnost sady.Pořadí nesmí být prázdný.

isEmpty

O(1)

O(1)

O(1)

O(1)

-

Vrátí true kolekce je prázdný.

isProperSubset

-

-

-

-

O (M * N protokolu)

Vrátí true Pokud jsou všechny prvky první sady v druhé sadě a alespoň jeden prvek druhé sadě není v první sadě.

isProperSuperset

-

-

-

-

O (M * N protokolu)

Vrátí true Pokud jsou všechny prvky druhé sady v první sadě a alespoň jeden prvek první sada není v druhé sadě.

isSubset

-

-

-

-

O (M * N protokolu)

Vrátí true Pokud jsou všechny prvky první sady v druhé sadě.

isSuperset

-

-

-

-

O (M * N protokolu)

Vrátí true Pokud jsou všechny prvky druhé sady v první sadě.

ITER

O(N)

O(N)

O(N)

O(N)

O(N)

Každý prvek kolekce se týká dané funkce.

iteri

O(N)

O(N)

O(N)

-

-

Každý prvek kolekce se týká dané funkce.Celé číslo, který je předán do funkce označuje index prvku.

iteri2

O(N)

O(N)

-

-

-

Se týká dané funkce dvojice prvků, které jsou vybírány z odpovídající indexů ve dvou maticích.Celé číslo, který je předán do funkce Určuje index prvků.Dvě pole musí mít stejnou délku.

iter2

O(N)

O(N)

O(N)

-

-

Se týká dané funkce dvojice prvků, které jsou vybírány z odpovídající indexů ve dvou maticích.Dvě pole musí mít stejnou délku.

Délka

O(1)

O(N)

O(N)

-

-

Vrátí počet prvků v kolekci.

Mapa

O(N)

O(N)

O(1)

-

-

Vytvoří kolekci, jejíž prvky jsou výsledky použití dané funkce pro každý prvek pole.

map2

O(N)

O(N)

O(1)

-

-

Vytvoří kolekci, jejíž prvky jsou výsledky použití dané funkce ukládání odpovídajících prvků dvou kolekcí.Dvě vstupní pole musí mít stejnou délku.

map3

-

O(N)

-

-

-

Vytvoří kolekci, jejíž prvky jsou výsledky použití dané funkce odpovídající elementy kolekcí tři současně.

rozhraní MAPI

O(N)

O(N)

O(N)

-

-

Vytvoří pole, jehož prvky jsou výsledky použití dané funkce pro každý prvek pole.Celé číslo indexu, který je předán do funkce Určuje index prvku, který během transformace.

mapi2

O(N)

O(N)

-

-

-

Vytvoří kolekci, jejíž prvky jsou výsledky použití dané funkce odpovídající prvky dvě kolekce párový také předávání index prvků.Dvě vstupní pole musí mít stejnou délku.

Max

O(N)

O(N)

O(N)

-

-

Vrátí největší prvek v kolekci, porovnání pomocí max operátor.

maxBy

O(N)

O(N)

O(N)

-

-

Vrátí největší prvek v kolekci, porovnání pomocí max na výsledku funkce.

maxElement

-

-

-

-

O (protokol N)

Vrátí největší prvek v sadě podle pořadí pro množinu.

min

O(N)

O(N)

O(N)

-

-

Vrátí nejmenší prvek v kolekci, porovnání pomocí min operátor.

minBy

O(N)

O(N)

O(N)

-

-

Vrátí nejmenší prvek v kolekci, porovnání pomocí min operátor na výsledku funkce.

minElement

-

-

-

-

O (protokol N)

Vrátí nejnižší prvek v sadě podle pořadí pro množinu.

ofArray

-

O(N)

O(1)

O(N)

O(N)

Vytvoří kolekci, která obsahuje stejné prvky jako dané matice.

ofList

O(N)

-

O(1)

O(N)

O(N)

Vytvoří kolekci, která obsahuje stejné prvky jako daný seznam.

ofSeq

O(N)

O(N)

-

O(N)

O(N)

Vytvoří kolekci, která obsahuje stejné prvky jako dané posloupnosti.

ukládání

-

-

O(N)

-

-

Vrátí pořadí jednotlivých prvků vstupní posloupnosti a jeho předchůdce, kromě první prvek, který je vrácen pouze jako předchůdce druhý prvek.

oddíl

O(N)

O(N)

-

O(N)

O(N)

Rozdělí do dvou kolekcí kolekce.První kolekce obsahuje prvky, které vrátí dané predikát true, a druhá kolekce obsahuje prvky, které vrátí dané predikát false.

permute

O(N)

O(N)

-

-

-

Vrátí pole se všemi prvky permuted podle zadaného permutaci.

vyskladnění

O(N)

O(N)

O(N)

O (protokol N)

-

Následné prvky, vrací první výsledek, kde některé funkce vrací se týká dané funkce.Funkce vrátí nikdy některé, KeyNotFoundException je aktivována.

jen pro čtení

-

-

O(N)

-

-

Vytvoří objekt sekvence, který deleguje objekt dané posloupnosti.Tato operace zajišťuje cast typu nelze rediscover a změnit původní posloupnost.Například pokud matice, vrátí sekvence vrácené prvky pole, ale nelze převést objekt vrácený sekvence na matici.

zmenšit

O(N)

O(N)

O(N)

-

-

Funkce se vztahuje na každý prvek kolekce threading argument akumulátorové prostřednictvím výpočtu.Tato funkce spustí použitím funkce pro první dva prvky, předá tento výsledek do funkce třetí prvek, a tak dále.Funkce vrací konečný výsledek.

reduceBack

O(N)

O(N)

-

-

-

Funkce se vztahuje na každý prvek kolekce threading argument akumulátorové prostřednictvím výpočtu.Pokud je vstupní funkce f a i0... V jsou prvky, tato funkce vypočítá f i0 (...)(f V-1)).

odebrat

-

-

-

O (protokol N)

O (protokol N)

Odstraní prvek z domény mapy.Žádná výjimka je aktivována, pokud není přítomen prvek.

replikovat

-

O(N)

-

-

-

Vytvoří seznam určené délky každého prvku nastavena na danou hodnotu.

rev

O(N)

O(N)

-

-

-

Vrátí seznam nové prvky v obráceném pořadí.

skenování

O(N)

O(N)

O(N)

-

-

Funkce se vztahuje na každý prvek kolekce threading argument akumulátorové prostřednictvím výpočtu.Tato operace se vztahuje na funkci druhého argumentu a první prvek seznamu.Operaci potom předá tento výsledek do funkce s druhý prvek atd.Nakonec operace vrátí seznam Výsledky zprostředkujících a konečný výsledek.

scanBack

O(N)

O(N)

-

-

-

Operace foldBack se podobá, ale vrací meziproduktech a konečných výsledků.

singleton

-

-

O(1)

-

O(1)

Vrátí číselné řady, která vede pouze jednu položku.

nastavit

O(1)

-

-

-

-

Nastaví prvek matice na zadanou hodnotu.

Přeskočit

-

-

O(N)

-

-

Vrátí pořadí, které přeskočí základní sekvence n prvky a pak dává zbývající prvky posloupnosti.

skipWhile

-

-

O(N)

-

-

Vrátí pořadí, při vstupní, zatímco prvky přeskočí základní sekvence daného predikátu vrátí true a pak výsledkem zbývající prvky posloupnosti.

řazení

O(N log N) průměr

Nejhorší O(N^2)

O(N log N)

O(N log N)

-

-

Seřadí podle hodnoty prvku kolekce.Prvky jsou porovnány s pomocí Porovnat.

sortBy

O(N log N) průměr

Nejhorší O(N^2)

O(N log N)

O(N log N)

-

-

Jsou v daném seznamu pomocí klíče, které poskytuje daný projekce.Porovnání pomocí klíče Porovnat.

sortInPlace

O(N log N) průměr

Nejhorší O(N^2)

-

-

-

-

Seřadí prvky pole mutace na místě a pomocí funkce dané porovnání.Porovnání prvky pomocí Porovnat.

sortInPlaceBy

O(N log N) průměr

Nejhorší O(N^2)

-

-

-

-

Seřadí prvky pole mutace na místě a pomocí projekce daného klíče.Porovnání prvky pomocí Porovnat.

sortInPlaceWith

O(N log N) průměr

Nejhorší O(N^2)

-

-

-

-

Seřadí prvky pole mutace na místě a pomocí funkce dané porovnání jako pořadí.

sortWith

O(N log N) průměr

Nejhorší O(N^2)

O(N log N)

-

-

-

Seřadí prvky kolekce pomocí porovnání dané funkce jako pořadí a vrací novou kolekci.

Sub

O(N)

-

-

-

-

Vytvoří pole obsahující daný Podrozsah, určený počáteční index a délka.

Součet

O(N)

O(N)

O(N)

-

-

Vrátí součet prvků v kolekci.

sumBy

O(N)

O(N)

O(N)

-

-

Vrátí součet výsledků, které jsou generovány použitím funkce pro každý prvek kolekce.

ocáskem

-

O(1)

-

-

-

Vrátí seznam bez jeho první prvek.

přijmout

-

-

O(N)

-

-

Vrátí pořadí až po zadaný počet prvků.

takeWhile

-

-

O(1)

-

-

Vrátí pořadí, při vstupní, zatímco prvky výnosů podkladové sekvence daného predikátu vrátí true a vrátí žádné další prvky.

toArray

-

O(N)

O(N)

O(N)

O(N)

Vytvoří pole z dané kolekce.

toList

O(N)

-

O(N)

O(N)

O(N)

Vytvoří seznam z dané kolekce.

toSeq

O(1)

O(1)

-

O(1)

O(1)

Vytvoří posloupnost z dané kolekce.

zkrácení

-

-

O(1)

-

-

Vrátí pořadí, při výčtu vrátí více prvků N.

tryFind

O(N)

O(N)

O(N)

O (protokol N)

-

Vyhledá prvek, který splňuje dané predikátu.

tryFindIndex

O(N)

O(N)

O(N)

-

-

Vyhledá první prvek, který splňuje dané predikátu a vrátí index odpovídající prvek nebo None Pokud neexistuje žádný takový prvek.

tryFindKey

-

-

-

O (protokol N)

-

Vrátí kolekci, která splňuje dané predikát nebo vrací klíč první mapování None Pokud neexistuje žádný takový prvek.

tryPick

O(N)

O(N)

O(N)

O (protokol N)

-

Platí pro následné prvky, vrací první výsledek, kde vrátí funkce dané funkce Some některé hodnoty.Pokud žádný takový prvek neexistuje, vrátí operace None.

projevovat

-

-

O(N)

-

-

Vrátí pořadí prvků, které generuje dané výpočtu.

unie

-

-

-

-

O (M * N protokolu)

Vypočítá sjednocení dvou sad.

unionMany

-

-

-

-

O (N1 * N2...)

Vypočítá sjednocení posloupnost sady.

Rozbalit

O(N)

O(N)

O(N)

-

-

Seznam párů se rozdělí na dva seznamy.

unzip3

O(N)

O(N)

O(N)

-

-

Seznam triples rozdělí na tři seznamy.

Stiskem

-

-

O(N)

-

-

Vrátí pořadí, které dává posuvné windows obsahující prvky, které jsou vybírány z vstupní posloupnosti.Každé okno je vrácen jako čerstvé array.

ZIP

O(N)

O(N)

O(N)

-

-

Kombinuje dvě kolekce dvojice do seznamu.Dva seznamy musí mít stejnou délku.

zip3

O(N)

O(N)

O(N)

-

-

Kombinuje tři kolekce triples do seznamu.Seznamy musí mít stejnou délku.

Viz také

Další zdroje

Typy F#

Referenční dokumentace jazyka F#