Megosztás a következőn keresztül:


F#-gyűjteménytípusok

A témakör áttekintésével meghatározhatja, hogy melyik F# gyűjteménytípus felel meg a legjobban egy adott igénynek. Ezek a gyűjteménytípusok eltérnek a .NET gyűjteménytípusaitól, például a System.Collections.Generic névtérben lévőktől, mivel az F#-gyűjteménytípusok funkcionális programozási szempontból lettek kialakítva, nem pedig objektumorientált perspektívából. Pontosabban csak a tömbgyűjtemény rendelkezik mutable elemekkel. Ezért a gyűjtemény módosításakor a módosított gyűjtemény egy példányát hozza létre az eredeti gyűjtemény módosítása helyett.

A gyűjteménytípusok abban is különböznek, hogy milyen típusú adatstruktúrában vannak tárolva az objektumok. Az adatstruktúrák, például kivonattáblák, csatolt listák és tömbök eltérő teljesítményjellemzőkkel és különböző elérhető műveletekkel rendelkeznek.

Gyűjteménytípusok táblázata

Az alábbi táblázat az F# gyűjteménytípusokat mutatja be.

Típus Leírás Kapcsolódó hivatkozások
Lista Az azonos típusú elemek rendezett, nem módosítható sorozata. Csatolt listaként implementálva. Listák

Listamodul
Tömb Az egymást követő adatelemek rögzített méretű, nulla alapú, mutable gyűjteménye, amelyek mind azonos típusúak. Tömbök

Tömbmodul

Tömb2D modul

Tömb3D modul
Seq Egy logikai elemsorozat, amely egyetlen típusból áll. A sorozatok különösen akkor hasznosak, ha nagy méretű, rendezett adatgyűjteménysel rendelkezik, de nem feltétlenül számít az összes elem használatára. Az egyes sorozatelemeket csak szükség szerint számítja ki a rendszer, így a sorozatok jobban teljesíthetnek a listáknál, ha nem minden elemet használnak. A szekvenciákat a seq<'T> típus jelöli, amely a IEnumerable<T>. Ezért minden implementálandó System.Collections.Generic.IEnumerable<'T> .NET-keretrendszer típus szekvenciaként használható. Szekvenciák

Seq modul
Térkép Az elemek nem módosítható szótára. Az elemeket kulcsok érik el. Leképezési modul
Set Bináris fákon alapuló nem módosítható halmaz, ahol az összehasonlítás az F# szerkezeti összehasonlító függvény, amely potenciálisan a felület implementációit használja a System.IComparable kulcsértékeken. Modul beállítása

Függvénytáblázat

Ez a szakasz az F#-gyűjteménytípusokon elérhető függvényeket hasonlítja össze. A függvény számítási összetettségét adja meg, ahol N az első gyűjtemény mérete, az M pedig a második gyűjtemény mérete, ha van ilyen. A kötőjel (-) azt jelzi, hogy ez a függvény nem érhető el a gyűjteményben. Mivel a sorozatok lazán kiértékelve vannak, egy függvény, például Seq.distinct O(1) lehet, mert azonnal visszatér, bár a számbavételkor továbbra is befolyásolja a sorozat teljesítményét.

Függvény Tömb Lista Sequence Térkép Set Leírás
hozzáfűzés O(N) O(N) O(N) - - Egy új gyűjteményt ad vissza, amely az első gyűjtemény elemeit, majd a második gyűjtemény elemeit tartalmazza.
add - - - O(log(N)) O(log(N)) Egy új gyűjteményt ad vissza az elem hozzáadásával.
Átlagos O(N) O(N) O(N) - - A gyűjtemény elemeinek átlagát adja vissza.
averageBy O(N) O(N) O(N) - - Az egyes elemekre alkalmazott megadott függvény eredményeinek átlagát adja vissza.
blit O(N) - - - - Egy tömb egy szakaszának másolása.
cache - - O(N) - - Kiszámítja és tárolja a sorozat elemeit.
Leadott - - O(N) - - Átalakítja az elemeket a megadott típusra.
Válassza ki O(N) O(N) O(N) - - Alkalmazza az adott függvényt f a lista minden elemére x . A függvény által visszaadott egyes elemek eredményeit tartalmazó listát adja vissza Some(f(x)).
Gyűjteni O(N) O(N) O(N) - - Alkalmazza az adott függvényt a gyűjtemény minden elemére, összefűzi az összes eredményt, és visszaadja a kombinált listát.
compareWith - - O(N) - - Két szekvenciát hasonlít össze az adott összehasonlító függvény használatával, elem szerint.
összefűzés O(N) O(N) O(N) - - A megadott enumerálásokat egyetlen összefűzött enumerálásként egyesíti.
contains - - - - O(log(N)) Igaz értéket ad vissza, ha a készlet tartalmazza a megadott elemet.
containsKey - - - O(log(N)) - Ellenőrzi, hogy egy elem egy térkép tartományában van-e.
darabszám - - - - O(N) A készlet elemeinek számát adja vissza.
countBy - - O(N) - - Kulcsgeneráló függvényt alkalmaz egy sorozat minden elemére, és visszaad egy sorozatot, amely egyedi kulcsokat és azok előfordulásainak számát adja vissza az eredeti sorrendben.
másolás O(N) - O(N) - - Másolja a gyűjteményt.
létrehozás O(N) - - - - Olyan egész elemekből álló tömböt hoz létre, amelyek kezdetben a megadott értékhez tartoznak.
késés - - O(1) - - Olyan sorozatot ad vissza, amely egy sorozat adott késleltetett specifikációjából épül fel.
Különbség - - - - O(M*log(N)) Egy új készletet ad vissza, amely a második készlet elemeit eltávolítja az első készletből.
distinct O(1)* Olyan sorozatot ad vissza, amely nem tartalmaz ismétlődő bejegyzéseket az általános kivonatok és egyenlőségi összehasonlítások alapján a bejegyzéseken. Ha egy elem többször fordul elő a sorozatban, a rendszer elveti a későbbi előfordulásokat.
distinctBy O(1)* Olyan sorozatot ad vissza, amely nem tartalmaz ismétlődő bejegyzéseket az adott kulcsgeneráló függvény által visszaadott kulcsok általános kivonata és egyenlőségi összehasonlítása alapján. Ha egy elem többször fordul elő a sorozatban, a rendszer elveti a későbbi előfordulásokat.
üres O(1) O(1) O(1) O(1) O(1) Üres gyűjteményt hoz létre.
Létezik O(N) O(N) O(N) O(log(N)) O(log(N)) Ellenőrzi, hogy a sorozat bármely eleme megfelel-e az adott predikátumnak.
exists2 O(min(N;M)) - O(min(N;M)) Annak vizsgálata, hogy a bemeneti sorozatok megfelelő elemeinek párja megfelel-e az adott predikátumnak.
Töltse ki O(N) A tömb elemeinek tartományát a megadott értékre állítja.
szűrő O(N) O(N) O(N) O(N) O(N) Egy új gyűjteményt ad vissza, amely csak annak a gyűjteménynek az elemeit tartalmazza, amelyekhez az adott predikátum visszatér true.
find O(N) O(N) O(N) O(log(N)) - Azt az első elemet adja vissza, amelynek az adott függvény ad vissza true. Visszaadja, System.Collections.Generic.KeyNotFoundException ha nincs ilyen elem.
findIndex O(N) O(N) O(N) - - A tömb első olyan elemének indexét adja vissza, amely megfelel az adott predikátumnak. Akkor emel, System.Collections.Generic.KeyNotFoundException ha egyetlen elem sem felel meg a predikátumnak.
findKey - - - O(log(N)) - Kiértékeli a függvényt a gyűjtemény minden leképezésén, és visszaadja az első leképezés kulcsát, ahol a függvény visszatér true. Ha ilyen elem nem létezik, ez a függvény ad elő System.Collections.Generic.KeyNotFoundException.
Hajtsa O(N) O(N) O(N) O(N) O(N) Függvényt alkalmaz a gyűjtemény minden elemére, amely a számításon keresztül csoportosít egy akkumulátor argumentumot. Ha a bemeneti függvény f, és az elemek i0... iN, ez a függvény f (... (f s i0)...) iN.
fold2 O(N) O(N) - - - Függvényt alkalmaz két gyűjtemény megfelelő elemeire, és a számításon keresztül csoportosít egy akkumulátorargumentumot. A gyűjteményeknek azonos méretűnek kell lenniük. Ha a bemeneti függvény f, és az elemek i0... iN és j0... jN, ez a függvény kiszámítja az f (... (f s i0 j0)...) iN jN.
foldBack O(N) O(N) - O(N) O(N) Függvényt alkalmaz a gyűjtemény minden elemére, amely a számításon keresztül csoportosít egy akkumulátor argumentumot. Ha a bemeneti függvény f, és az elemek i0... iN, ez a függvény f i0 (... (f iN s)).
foldBack2 O(N) O(N) - - - Függvényt alkalmaz két gyűjtemény megfelelő elemeire, és a számításon keresztül csoportosít egy akkumulátorargumentumot. A gyűjteményeknek azonos méretűnek kell lenniük. Ha a bemeneti függvény f, és az elemek i0... iN és j0... jN, ez a függvény f i0 j0 (... (f iN jN s)).
forall O(N) O(N) O(N) O(N) O(N) Ellenőrzi, hogy a gyűjtemény minden eleme megfelel-e az adott predikátumnak.
forall2 O(N) O(N) O(N) - - Annak vizsgálata, hogy a gyűjtemény összes megfelelő eleme megfelel-e az adott predikátumnak párban.
get /nth O(1) O(N) O(N) - - Egy elemet ad vissza a gyűjteményből az indexe alapján.
Fej - O(1) O(1) - - A gyűjtemény első elemét adja vissza.
Init O(N) O(N) O(1) - - Létrehoz egy gyűjteményt a dimenzió és egy generátorfüggvény alapján az elemek kiszámításához.
initInfinite - - O(1) - - Létrehoz egy sorozatot, amely az iterated során az egymást követő elemeket adja vissza az adott függvény meghívásával.
Metszi - - - - O(log(N)*log(M)) Két halmaz metszetét számítja ki.
intersectMany - - - - O(N1*N2...) Kiszámítja a halmazok sorozatának metszetét. A sorozat nem lehet üres.
isEmpty O(1) O(1) O(1) O(1) - Akkor adja true vissza, ha a gyűjtemény üres.
isProperSubset - - - - O(M*log(N)) Akkor adja true vissza, ha az első készlet összes eleme a második halmazban van, és a második készlet legalább egy eleme nincs az első készletben.
isProperSuperset - - - - O(M*log(N)) Akkor adja true vissza, ha a második készlet minden eleme az első halmazban van, és az első készlet legalább egy eleme nincs a második készletben.
isSubset - - - - O(M*log(N)) Akkor adja true vissza, ha az első készlet összes eleme a második halmazban van.
isSuperset - - - - O(M*log(N)) Akkor adja true vissza, ha a második készlet összes eleme az első halmazban van.
Iter O(N) O(N) O(N) O(N) O(N) Alkalmazza az adott függvényt a gyűjtemény minden elemére.
iteri O(N) O(N) O(N) - - Alkalmazza az adott függvényt a gyűjtemény minden elemére. A függvénynek átadott egész szám az elem indexét jelzi.
iteri2 O(N) O(N) - - - Az adott függvényt két tömb egyező indexeiből vett elempárra alkalmazza. A függvénynek átadott egész szám az elemek indexét jelzi. A két tömbnek azonos hosszúságúnak kell lennie.
iter2 O(N) O(N) O(N) - - Az adott függvényt két tömb egyező indexeiből vett elempárra alkalmazza. A két tömbnek azonos hosszúságúnak kell lennie.
utolsó O(1) O(N) O(N) - - A vonatkozó gyűjtemény utolsó elemét adja vissza.
length (hossz) O(1) O(N) O(N) - - A gyűjtemény elemeinek számát adja vissza.
térkép O(N) O(N) O(1) - - Létrehoz egy gyűjteményt, amelynek elemei az adott függvény tömb egyes elemeire való alkalmazásának eredményei.
map2 O(N) O(N) O(1) - - Létrehoz egy gyűjteményt, amelynek elemei az adott függvénynek a két gyűjtemény megfelelő elemeire való alkalmazásának eredményei. A két bemeneti tömbnek azonos hosszúságúnak kell lennie.
térkép3 - O(N) - - - Létrehoz egy gyűjteményt, amelynek elemei az adott függvény egyidejű alkalmazásának eredményei a három gyűjtemény megfelelő elemeire.
Mapi O(N) O(N) O(N) - - Létrehoz egy tömböt, amelynek elemei az adott függvénynek a tömb egyes elemeire való alkalmazásának eredményei. A függvénynek átadott egész számindex az átalakítandó elem indexét jelzi.
mapi2 O(N) O(N) - - - Létrehoz egy gyűjteményt, amelynek elemei az adott függvénynek a két gyűjtemény megfelelő elemeire való alkalmazásának eredményei, és az elemek indexét is átadják. A két bemeneti tömbnek azonos hosszúságúnak kell lennie.
max. O(N) O(N) O(N) - - A gyűjtemény legnagyobb elemét adja vissza a maximális operátorral összehasonlítva.
maxBy O(N) O(N) O(N) - - A gyűjtemény legnagyobb elemét adja vissza a függvény eredményének maximális értékével összehasonlítva.
maxElement - - - - O(log(N)) A készlet legnagyobb elemét adja vissza a készlethez használt sorrendnek megfelelően.
p O(N) O(N) O(N) - - A gyűjtemény legkisebb elemét adja vissza a minimális operátorral összehasonlítva.
minBy O(N) O(N) O(N) - - A gyűjtemény legkisebb elemét adja vissza a függvény eredményének minimális operátorával összehasonlítva.
minElement - - - - O(log(N)) A készlet legalacsonyabb elemét adja vissza a készlethez használt sorrendnek megfelelően.
ofArray - O(N) O(1) O(N) O(N) Létrehoz egy gyűjteményt, amely ugyanazokat az elemeket tartalmazza, mint az adott tömb.
ofList O(N) - O(1) O(N) O(N) Létrehoz egy gyűjteményt, amely ugyanazokat az elemeket tartalmazza, mint az adott lista.
ofSeq O(N) O(N) - O(N) O(N) Létrehoz egy gyűjteményt, amely ugyanazokat az elemeket tartalmazza, mint az adott sorozat.
párosítás iránya - - O(N) - - A bemeneti sorozat és annak elődje elemeinek sorozatát adja vissza, kivéve az első elemet, amelyet csak a második elem elődjeként ad vissza.
Partíció O(N) O(N) - O(N) O(N) A gyűjteményt két gyűjteményre osztja. Az első gyűjtemény tartalmazza azokat az elemeket, amelyekhez az adott predikátum visszatér true, a második gyűjtemény pedig azokat az elemeket tartalmazza, amelyekhez az adott predikátum visszatér false.
permute O(N) O(N) - - - Egy tömböt ad vissza, amely az összes elemet a megadott permutációnak megfelelően módosítja.
Válasszon O(N) O(N) O(N) O(log(N)) - Alkalmazza az adott függvényt az egymást követő elemekre, és visszaadja az első eredményt, ahol a függvény a Some értéket adja vissza. Ha a függvény soha nem ad vissza Néhányat, System.Collections.Generic.KeyNotFoundException akkor a függvény fel lesz emelve.
írásvédett - - O(N) - - Létrehoz egy szekvenciaobjektumot, amely az adott szekvencia-objektumhoz delegál. Ez a művelet biztosítja, hogy egy típus leadása ne tudja újra felfedezni és mutálni az eredeti sorozatot. Ha például egy tömböt ad meg, a visszaadott sorozat visszaadja a tömb elemeit, de a visszaadott sorozatobjektumot nem lehet tömbbe leadni.
Csökkenti O(N) O(N) O(N) - - Függvényt alkalmaz a gyűjtemény minden elemére, amely a számításon keresztül csoportosít egy akkumulátor argumentumot. Ez a függvény azzal kezdődik, hogy a függvényt az első két elemre alkalmazza, ezt az eredményt átadja a függvénynek a harmadik elemmel együtt, és így tovább. A függvény a végeredményt adja vissza.
reduceBack O(N) O(N) - - - Függvényt alkalmaz a gyűjtemény minden elemére, amely a számításon keresztül csoportosít egy akkumulátor argumentumot. Ha a bemeneti függvény f, és az elemek i0... iN, ez a függvény f i0 (... (f iN-1 iN)).
eltávolít - - - O(log(N)) O(log(N)) Eltávolít egy elemet a térkép tartományából. Nincs kivétel, ha az elem nincs jelen.
Replikálni - O(N) - - - Egy megadott hosszúságú listát hoz létre, amelynek minden eleme a megadott értékre van állítva.
Rev O(N) O(N) - - - Egy új listát ad vissza, amelynek elemei fordított sorrendben szerepelnek.
Átkutat O(N) O(N) O(N) - - Függvényt alkalmaz a gyűjtemény minden elemére, amely a számításon keresztül csoportosít egy akkumulátor argumentumot. Ez a művelet a függvényt a lista második argumentumára és első elemére alkalmazza. A művelet ezután átadja ezt az eredményt a függvénynek a második elemmel együtt, és így tovább. Végül a művelet visszaadja a köztes eredmények listáját és a végeredményt.
scanBack O(N) O(N) - - - Hasonlít a foldBack műveletre, de a köztes és a végső eredményt is visszaadja.
Singleton - - O(1) - O(1) Olyan sorozatot ad vissza, amely csak egy elemet eredményez.
halmaz O(1) - - - - A tömb egy elemét a megadott értékre állítja.
Kihagyás - - O(N) - - Olyan sorozatot ad vissza, amely kihagyja az alapul szolgáló sorozat N elemeit, majd visszaadja a sorozat többi elemét.
skipWhile - - O(N) - - Olyan sorozatot ad vissza, amely az iterated során kihagyja az alapul szolgáló sorozat elemeit, miközben az adott predikátum visszaadja true , majd visszaadja a sorozat többi elemét.
Rendezés O(N*log(N)) átlaga

O(N^2) legrosszabb eset
O(N*log(N)) O(N*log(N)) - - Elemérték szerint rendezi a gyűjteményt. Az elemek összehasonlítása történik.
rendezés O(N*log(N)) átlaga

O(N^2) legrosszabb eset
O(N*log(N)) O(N*log(N)) - - A megadott listát az adott vetület által biztosított kulcsok használatával rendezi. A kulcsok összehasonlítása történik.
sortInPlace O(N*log(N)) átlaga

O(N^2) legrosszabb eset
- - - - Rendezi a tömb elemeit úgy, hogy a helyén mutálja, és a megadott összehasonlító függvényt használja. Az elemek összehasonlítása az összehasonlítás használatával történik.
sortInPlaceBy O(N*log(N)) átlaga

O(N^2) legrosszabb eset
- - - - Rendezi a tömb elemeit úgy, hogy a helyén mutálja, és a kulcsok adott vetületét használja. Az elemek összehasonlítása az összehasonlítás használatával történik.
sortInPlaceWith O(N*log(N)) átlaga

O(N^2) legrosszabb eset
- - - - Rendezi a tömb elemeit úgy, hogy a helyén mutálja, és a megadott összehasonlító függvényt használja sorrendként.
sortWith O(N*log(N)) átlaga

O(N^2) legrosszabb eset
O(N*log(N)) - - - Rendezi a gyűjtemény elemeit, a megadott összehasonlító függvényt használva sorrendként, és egy új gyűjteményt ad vissza.
Al O(N) - - - - Létrehoz egy tömböt, amely a kezdő index és a hossz alapján megadott alrangot tartalmazza.
összeg O(N) O(N) O(N) - - A gyűjtemény elemeinek összegét adja vissza.
sumBy O(N) O(N) O(N) - - A függvény gyűjtemény egyes elemeire való alkalmazásával létrehozott eredmények összegét adja vissza.
Farok - O(1) - - - A listát az első elem nélkül adja vissza.
Elvétel - - O(N) - - A sorozat elemeit adja vissza egy megadott számig.
takeWhile - - O(1) - - Olyan sorozatot ad vissza, amely az iterated során az alapul szolgáló sorozat elemeit adja vissza, míg az adott predikátum visszaadja true , majd nem ad vissza több elemet.
toArray - O(N) O(N) O(N) O(N) Létrehoz egy tömböt az adott gyűjteményből.
toList O(N) - O(N) O(N) O(N) Létrehoz egy listát az adott gyűjteményből.
toSeq O(1) O(1) - O(1) O(1) Létrehoz egy sorozatot az adott gyűjteményből.
megcsonkít - - O(1) - - Olyan sorozatot ad vissza, amely enumeráláskor legfeljebb N elemeket ad vissza.
tryFind O(N) O(N) O(N) O(log(N)) - Egy adott predikátumnak megfelelő elemet keres.
tryFindIndex O(N) O(N) O(N) - - Megkeresi az első elemet, amely megfelel egy adott predikátumnak, és visszaadja az egyező elem indexét, vagy None ha nincs ilyen elem.
tryFindKey - - - O(log(N)) - A gyűjtemény első olyan leképezésének kulcsát adja vissza, amely megfelel az adott predikátumnak, vagy visszaadja None , ha nincs ilyen elem.
tryPick O(N) O(N) O(N) O(log(N)) - Alkalmazza az adott függvényt az egymást követő elemekre, és visszaadja az első eredményt, ahol a függvény Some visszaad egy értéket. Ha nincs ilyen elem, a művelet visszaadja a következőt None: .
Kibontakozni - - O(N) - - Egy olyan sorozatot ad vissza, amely tartalmazza azokat az elemeket, amelyeket az adott számítás generál.
unió - - - - O(M*log(N)) Kiszámítja a két halmaz egyesítését.
unionMany - - - - O(N1*N2...) A készletek sorozatának egyesítését számítja ki.
Csomagolja ki O(N) O(N) O(N) - - A párok listáját két listára osztja.
unzip3 O(N) O(N) O(N) - - A háromból álló listát három listára osztja.
Ablakos - - O(N) - - Olyan sorozatot ad vissza, amely a bemeneti sorozatból kirajzolt elemekből álló tolóablakokat eredményez. Minden ablak friss tömbként lesz visszaadva.
Zip O(N) O(N) O(N) - - A két gyűjteményt párok listájában egyesíti. A két lista hosszának egyenlőnek kell lennie.
zip3 O(N) O(N) O(N) - - A három gyűjteményt hármasok listájában egyesíti. A listáknak egyenlő hosszúságúaknak kell lenniük.

Lásd még