Udostępnij za pośrednictwem


Typy kolekcji F#

Przeglądając ten temat, można określić, które F# typ kolekcji najlepiej odpowiada szczególne potrzeby.Te typy kolekcji różnią się od typów kolekcji w.NET Framework, takich jak te w System.Collections.Generic obszaru nazw, w tym typy kolekcji F# zaprojektowano z funkcjonalności perspektywy programowania niż obiektowo perspektywy.Dokładniej tylko kolekcji tablica ma tych elementów.Dlatego po zmodyfikowaniu kolekcji utworzyć wystąpienia zmodyfikowanych kolekcji, zmieniając oryginalnej kolekcji.

Typy kolekcji różnią się także typ struktury danych, w którym przechowywane są obiekty.Struktury danych tabel mieszania, listami i tablice mają różne cechy i zestaw dostępnych operacji.

Typy kolekcji F#

Poniższa tabela zawiera typy kolekcji F#.

Typ

Opis

Łącza pokrewne

Lista

Zamówione, niezmienna serii elementów tego samego typu.Zaimplementowany jako połączonej listy.

Listy (F#)

Moduł listy

Tablica

-Size, od zera, tych kolekcji danych kolejne elementy, które są tego samego typu.

Tablice (F#)

Moduł tablicy

Moduł Array2D

Moduł Array3D

SEQ

Logiczne serii elementów, które są wszystkie jednego typu.Sekwencje są szczególnie przydatne, gdy mają duże, uporządkowane zbierania danych, ale niekoniecznie nieoczekiwanie wszystkie elementy.Poszczególne elementy są obliczane tylko jako sekwencja wymagane tak sekwencji można wykonywać lepiej niż lista, jeśli nie są używane wszystkie elementy.Sekwencje są reprezentowane przez seq, <'T> Typ, który jest aliasem dla <T> interfejsu IEnumerable.Dlatego dowolnego typu.NET Framework, który implementuje IEnumerable może być używany jako sekwencję.

Sekwencje (F#)

Moduł SEQ

Mapa

Niezmienne słownik elementów.Elementy są dostępne dla klucza.

Moduł mapę

Zestaw

Zestaw niezmienne, oparty na binarny drzew, gdzie porównanie funkcja F# strukturalnych porównania, która potencjalnie używa implementacje IComparable interfejsu wartości klucza.

Ustaw moduł

Tabela funkcji

W tej sekcji porównano funkcje, które są dostępne na typy kolekcji F#.Podano złożoności obliczeniowej funkcji, gdzie n jest rozmiarem pierwszego zbioru i m jest rozmiar kolekcji drugiej, jeśli.Myślnik (-) wskazuje, że ta funkcja nie jest dostępna w kolekcji.Ponieważ sekwencje lazily są oceniane, funkcji Seq.distinct być może O(1) zwraca niezwłocznie, chociaż nadal wpływa na wydajność podczas wyliczania sekwencji.

Funkcja

Tablica

Lista

Sekwencja

Mapa

Zestaw

Opis

Dołącz

O(M)

O(N)

O(N)

-

-

Zwraca kolekcję nowy, zawierający elementy pierwszy zbiór następują elementy kolekcji drugiego.

Dodawanie

-

-

-

O (log N)

O (log N)

Zwraca kolekcję nowy element dodany.

Średnia

O(N)

O(N)

O(N)

-

-

Zwraca średnią elementów w kolekcji.

averageBy

O(N)

O(N)

O(N)

-

-

Zwraca średnią wyników przewidziano funkcji stosowane do każdego elementu.

kolorowego

O(N)

-

-

-

-

Kopiuje sekcji tablicy.

pamięć podręczna

-

-

O(N)

-

-

Oblicza i przechowuje elementy sekwencji.

Obsada

-

-

O(N)

-

-

Konwertuje elementy określonego typu.

Wybierz

O(N)

O(N)

O(N)

-

-

Stosuje się dana funkcja f do każdego elementu x listy.Zwraca listę zawierającą wyniki dla każdego elementu, gdy funkcja zwraca Some(f(x)).

zebrać

O(N)

O(N)

O(N)

-

-

Do każdego elementu w kolekcji ma zastosowanie dana funkcja, łączy wszystkie wyniki i zwraca połączonej listy.

compareWith

-

-

O(N)

-

-

Porównuje dwa sekwencji za pomocą funkcji danego porównania elementów.

concat

O(N)

O(N)

O(N)

-

-

Łączy danej wyliczenie z wyliczeniach jako pojedynczy wyliczenie uzyskiwanej.

zawiera

-

-

-

-

O (log N)

Zwraca wartość true, jeżeli zestaw zawiera określony element.

containsKey

-

-

-

O (log N)

-

Sprawdza, czy element jest w domenie mapy.

Licznik

-

-

-

-

O(N)

Zwraca liczbę elementów w zestawie.

countBy

-

-

O(N)

-

-

Funkcja generowania klucza dotyczy każdego elementu sekwencji i zwraca unikatowe klucze oraz ich liczba wystąpień w oryginalnej kolejności sekwencji.

Kopiuj

O(N)

-

O(N)

-

-

Kopiuje kolekcji.

Tworzenie

O(N)

-

-

-

-

Tworzy tablicę całego elementy, które są wszystkie początkowo danej wartości.

opóźnienie

-

-

O(1)

-

-

Zwraca sekwencji, który jest zbudowany ze specyfikacji opóźnione danej sekwencji.

różnica

-

-

-

-

O (M * dziennika N)

Zwraca nowy zestaw z elementami drugi zestaw usunięte z pierwszego zestawu.

różne

O(1) *

Zwraca sekwencja nie zduplikowane pozycje według rodzajowy porównań mieszania i równości w zapisach.Jeśli element występuje wiele razy w sekwencji, później wystąpień są odrzucane.

distinctBy

O(1) *

Zwraca sekwencja nie zduplikowane pozycje według rodzajowy mieszania i równości porównań kluczy, które zwraca funkcja danej generowania klucza.Jeśli element występuje wiele razy w sekwencji, później wystąpień są odrzucane.

pusty

O(1)

O(1)

O(1)

O(1)

O(1)

Tworzy pustą kolekcją.

istnieje

O(N)

O(N)

O(N)

O (log N)

O (log N)

Sprawdzenie, czy każdy element sekwencji spełnia danego predykatu.

exists2

O(min(N,M))

-

O(min(N,M))

Sprawdzenie, czy odpowiednie elementy sekwencji wejściowych każdej pary spełnia danego predykatu.

Wypełnienie

O(N)

Ustawia zakres elementów tablicy danej wartości.

Filtr

O(N)

O(N)

O(N)

O(N)

O(N)

Zwraca nową kolekcję, zawierający elementy kolekcji, dla którego dany predykat zwraca true.

Znajdź

O(N)

O(N)

O(N)

O (log N)

-

Zwraca pierwszy element, dla którego dana funkcja zwraca true.Zwraca KeyNotFoundException , jeśli element nie istnieje.

findIndex

O(N)

O(N)

O(N)

-

-

Zwraca indeks pierwszego elementu w tablicy, która spełnia danego predykatu.Podnosi KeyNotFoundException , jeśli element nie spełnia predykat.

findKey

-

-

-

O (log N)

-

Wynikiem funkcji każdego mapowania w kolekcji i zwraca klucza dla pierwszego mapowania, gdy funkcja zwraca true.Jeśli element nie istnieje, funkcja ta wywołuje KeyNotFoundException.

składanie

O(N)

O(N)

O(N)

O(N)

O(N)

Każdy element kolekcji, argument akumulator za pomocą obliczeń threading dotyczy funkcji.Jeśli elementy są i0... W funkcji wprowadzania jest f, ta funkcja oblicza f (...)(f s i0)...) W programie.

fold2

O(N)

O(N)

-

-

-

Dotyczy funkcji odpowiednie elementy zbiorów dwóch wątków argumentu akumulator za pomocą obliczeń.Kolekcje muszą mieć identyczne rozmiarów.Jeśli funkcja wejściowy jest f i elementy są i0... W i j0... jN i ta funkcja oblicza f (...)(f s i0 j0)...) W J

foldBack

O(N)

O(N)

-

O(N)

O(N)

Każdy element kolekcji, argument akumulator za pomocą obliczeń threading dotyczy funkcji.Jeśli elementy są i0... W funkcji wprowadzania jest f, ta funkcja oblicza f i0 (...)f w s).

foldBack2

O(N)

O(N)

-

-

-

Dotyczy funkcji odpowiednie elementy zbiorów dwóch wątków argumentu akumulator za pomocą obliczeń.Kolekcje muszą mieć identyczne rozmiarów.Jeśli funkcja wejściowy jest f i elementy są i0... W i j0... jN i ta funkcja oblicza f i0 j0 (...)f jN S).

forall

O(N)

O(N)

O(N)

O(N)

O(N)

Sprawdza, czy wszystkie elementy kolekcji spełniają danego predykatu.

forall2

O(N)

O(N)

O(N)

-

-

Sprawdza, czy wszystkie odpowiednie elementy kolekcji spełniają potrzeby danego predykatu.

Get / n-ty

O(1)

O(N)

O(N)

-

-

Zwraca element z kolekcji, biorąc pod uwagę jej indeks.

Szef

-

O(1)

O(1)

-

-

Zwraca pierwszy element w kolekcji.

init

O(N)

O(N)

O(1)

-

-

Tworzy wymiaru i funkcja generatora do wyliczania elementów kolekcji.

initInfinite

-

-

O(1)

-

-

Generuje sekwencji, podstawy, zwraca kolejne elementy, wywołując danej funkcji.

część wspólna

-

-

-

-

O (log N * dziennika M)

Oblicza punkt przecięcia dwóch zestawów.

intersectMany

-

-

-

-

O (N1 * N2...)

Oblicza punkt przecięcia sekwencji zestawów.Sekwencja nie może być pusta.

Funkcja isEmpty

O(1)

O(1)

O(1)

O(1)

-

Zwraca true Jeśli zbiór jest pusty.

isProperSubset

-

-

-

-

O (M * dziennika N)

Zwraca true są wszystkie elementy pierwszy zestaw w drugim zestawie i co najmniej jeden element drugi zestaw nie jest w pierwszym.

isProperSuperset

-

-

-

-

O (M * dziennika N)

Zwraca true są wszystkie elementy drugi zestaw w pierwszym i co najmniej jeden element pierwszy zestaw nie jest w drugim zestawie.

isSubset

-

-

-

-

O (M * dziennika N)

Zwraca true , jeśli są wszystkie elementy pierwszego zestawu w drugim zestawie.

isSuperset

-

-

-

-

O (M * dziennika N)

Zwraca true Jeśli pierwszy zestaw wszystkich elementów drugi zestaw.

ITER

O(N)

O(N)

O(N)

O(N)

O(N)

Dotyczy dana funkcja każdego elementu w kolekcji.

iteri

O(N)

O(N)

O(N)

-

-

Dotyczy dana funkcja każdego elementu w kolekcji.Liczba całkowita, który jest przekazywany do funkcji wskazuje indeks elementu.

iteri2

O(N)

O(N)

-

-

-

Dotyczy dana funkcja para elementów, które są pobierane z dopasowywania indeksów w dwóch tablicach.Liczba całkowita, który jest przekazywany do funkcji wskazuje indeks elementów.Dwie tablice muszą mieć taką samą długość.

iter2

O(N)

O(N)

O(N)

-

-

Dotyczy dana funkcja para elementów, które są pobierane z dopasowywania indeksów w dwóch tablicach.Dwie tablice muszą mieć taką samą długość.

długość

O(1)

O(N)

O(N)

-

-

Zwraca liczbę elementów w kolekcji.

Mapa

O(N)

O(N)

O(1)

-

-

Tworzy kolekcji, w której elementy są wyniki stosowania danej funkcji do każdego elementu tablicy.

map2

O(N)

O(N)

O(1)

-

-

Tworzy kolekcji, w której elementy są wyniki potrzeby stosowania danej funkcji odpowiednich elementów dwie kolekcje.Dwie tablice wejściowy musi mieć taką samą długość.

map3

-

O(N)

-

-

-

Tworzy kolekcji, w której elementy są wyniki stosowania danej funkcji do odpowiednich elementów trzy zbiory jednocześnie.

MAPI

O(N)

O(N)

O(N)

-

-

Tworzy tablicę, w której elementy są wyniki stosowania danej funkcji do każdego elementu tablicy.Indeks liczba całkowita, który jest przekazywany do funkcji wskazuje indeks elementu transformację.

mapi2

O(N)

O(N)

-

-

-

Tworzy kolekcji, w której elementy są wyniki stosowania odpowiednich elementów dwie kolekcje parowania, przekazując również indeksu elementów daną funkcję.Dwie tablice wejściowy musi mieć taką samą długość.

MAX

O(N)

O(N)

O(N)

-

-

Zwraca największą element w kolekcji porównywane za pomocą max operatora.

maxBy

O(N)

O(N)

O(N)

-

-

Zwraca największą element w kolekcji porównywane za pomocą max na wynik funkcji.

maxElement

-

-

-

-

O (log N)

Zwraca największą element zestawu według kolejności jest używany dla zestawu.

min

O(N)

O(N)

O(N)

-

-

Zwraca przynajmniej element w kolekcji porównywane za pomocą min operatora.

minBy

O(N)

O(N)

O(N)

-

-

Zwraca przynajmniej element w kolekcji porównywane za pomocą min operatora na wynik funkcji.

minElement

-

-

-

-

O (log N)

Zwraca najniższy element zestawu według kolejności jest używany dla zestawu.

ofArray

-

O(N)

O(1)

O(N)

O(N)

Tworzy kolekcji, która zawiera te same elementy w danej tablicy.

ofList

O(N)

-

O(1)

O(N)

O(N)

Tworzy kolekcji, która zawiera te same elementy jako podanej listy.

ofSeq

O(N)

O(N)

-

O(N)

O(N)

Tworzy kolekcji, która zawiera te same elementy jako danej sekwencji.

potrzeby

-

-

O(N)

-

-

Zwraca sekwencji każdego elementu w sekwencji wejściowych i jego poprzednika, z wyjątkiem pierwszego elementu, który jest zwracany tylko jako poprzednika drugiego elementu.

partycja

O(N)

O(N)

-

O(N)

O(N)

Dzieli kolekcji dwie kolekcje.Pierwsza kolekcja zawiera elementy, dla których dany predykat zwraca true, a drugi kolekcja zawiera elementy, dla których dany predykat zwraca false.

ich uporządkowania

O(N)

O(N)

-

-

-

Zwraca tablicę zawierającą wszystkie elementy permuted zgodnie z określonym permutacji.

pobranie

O(N)

O(N)

O(N)

O (log N)

-

Dotyczy kolejnych elementów zwróceniem pierwszego wyniku, gdzie funkcja zwraca niektóre daną funkcję.Jeśli funkcja nigdy nie zwraca niektóre, KeyNotFoundException jest uruchamiany.

tylko do odczytu

-

-

O(N)

-

-

Tworzy obiekt sekwencji, który przekazuje do obiektu danej sekwencji.Ta operacja zapewnia, że rzutowanie typu nie rediscover i sekwencji oryginalnej mutacji.Na przykład jeśli w danej tablicy, zwracane sekwencji zwróci elementów tablicy, ale nie można rzutować obiektu sekwencji zwracane do tablicy.

ograniczenia

O(N)

O(N)

O(N)

-

-

Każdy element kolekcji, argument akumulator za pomocą obliczeń threading dotyczy funkcji.Ta funkcja rozpoczyna stosując funkcję pierwsze dwa elementy, przekazuje ten wynik do funkcji trzeci element i tak dalej.Funkcja zwraca wynik końcowy.

reduceBack

O(N)

O(N)

-

-

-

Każdy element kolekcji, argument akumulator za pomocą obliczeń threading dotyczy funkcji.Jeśli elementy są i0... W funkcji wprowadzania jest f, ta funkcja oblicza f i0 (...)(f W-1 W)).

Usuń

-

-

-

O (log N)

O (log N)

Usuwa element z domeny mapy.Wyjątek nie jest uruchamiany, jeśli element nie istnieje.

Replikuj

-

O(N)

-

-

-

Tworzy listę o określonej długości z każdego wartość danego elementu.

Rev

O(N)

O(N)

-

-

-

Zwraca nową listę z elementami w kolejności odwrotnej.

skanowanie

O(N)

O(N)

O(N)

-

-

Każdy element kolekcji, argument akumulator za pomocą obliczeń threading dotyczy funkcji.Ta operacja dotyczy funkcji drugiego argumentu i pierwszy element listy.Następnie operacji i tak dalej przekazuje ten wynik do funkcji z drugiego elementu.Na koniec operacji zwraca listę wyników pośredniego i końcowego wyniku.

scanBack

O(N)

O(N)

-

-

-

Podobny do operacji foldBack, ale zwraca wyniki pośrednich i końcowych.

Singleton

-

-

O(1)

-

O(1)

Zwraca sekwencji zwracające tylko jeden element.

zestaw

O(1)

-

-

-

-

Ustawia wartość określonego elementu tablicy.

Pomiń

-

-

O(N)

-

-

Zwraca sekwencji, który następnie plonów pozostałych elementów sekwencji i pomija n elementów podstawowych sekwencji.

skipWhile

-

-

O(N)

-

-

Zwraca sekwencji, gdy podstawy, pomija elementów podstawowych sekwencji podczas danego zwraca predykatu true i następnie zwraca pozostałe elementy w sekwencji.

Sortowanie

O(N log N) Średnia

Najgorszy przypadek O(N^2)

O(N log N)

O(N log N)

-

-

Kolekcja sortuje według wartości elementu.Elementy są porównywane za pomocą porównać.

sortBy

O(N log N) Średnia

Najgorszy przypadek O(N^2)

O(N log N)

O(N log N)

-

-

Sortuje danej listy przy użyciu kluczy, które zapewnia danym rzutowania.Klucze są porównywane za pomocą porównać.

sortInPlace

O(N log N) Średnia

Najgorszy przypadek O(N^2)

-

-

-

-

Sortuje elementy tablicy mutacja go w miejscu i przy użyciu funkcji danego porównania.Elementy są porównywane za pomocą porównać.

sortInPlaceBy

O(N log N) Średnia

Najgorszy przypadek O(N^2)

-

-

-

-

Sortuje elementy tablicy mutacja go w miejscu i używając danej rzut kluczy.Elementy są porównywane za pomocą porównać.

sortInPlaceWith

O(N log N) Średnia

Najgorszy przypadek O(N^2)

-

-

-

-

Sortuje elementy tablicy mutacja go w miejscu i używając funkcji danego porównania jako zamówienia.

sortWith

O(N log N) Średnia

Najgorszy przypadek O(N^2)

O(N log N)

-

-

-

Sortuje elementy kolekcji, przy użyciu funkcji danego porównania, jak kolejność i zwracanie nową kolekcję.

Sub

O(N)

-

-

-

-

Tworzy tablicę zawierającą danego Podzakres, jest określona przez uruchomienie indeks i długość.

Suma

O(N)

O(N)

O(N)

-

-

Zwraca sumę elementów w kolekcji.

sumBy

O(N)

O(N)

O(N)

-

-

Zwraca sumę wyników generowanych przez zastosowanie funkcji do każdego elementu w kolekcji.

ogon

-

O(1)

-

-

-

Zwraca listę bez jej pierwszy element.

podjąć

-

-

O(N)

-

-

Zwraca elementy do określonej liczby sekwencji.

takeWhile

-

-

O(1)

-

-

Zwraca sekwencji, gdy podstawy, elementy plonów podstawowych sekwencji podczas danego zwraca predykatu true , a następnie zwraca nie więcej elementów.

toArray

-

O(N)

O(N)

O(N)

O(N)

Tworzy tablicę z danego zbioru.

toList

O(N)

-

O(N)

O(N)

O(N)

Tworzy listę z danego zbioru.

toSeq

O(1)

O(1)

-

O(1)

O(1)

Tworzy sekwencji z danego zbioru.

obciąć

-

-

O(1)

-

-

Zwraca sekwencji, gdy wyliczone, zwraca więcej niż n elementów.

tryFind

O(N)

O(N)

O(N)

O (log N)

-

Wyszukuje spełnia predykat danego elementu.

tryFindIndex

O(N)

O(N)

O(N)

-

-

Wyszukuje pierwszy element, który spełnia predykat danego i zwraca indeks elementu pasujące lub None , jeśli element nie istnieje.

tryFindKey

-

-

-

O (log N)

-

Zwraca klucz pierwszego mapowania Kolekcja, która spełnia danego predykat lub zwraca None , jeśli element nie istnieje.

tryPick

O(N)

O(N)

O(N)

O (log N)

-

Dotyczy kolejnych elementów zwróceniem pierwszego wyniku, gdzie funkcja zwraca danej funkcji Some dla niektórych wartości.Jeśli element nie istnieje, operacja zwraca None.

unfold

-

-

O(N)

-

-

Zwraca zawierający elementy, które generuje obliczeń danej sekwencji.

Unia

-

-

-

-

O (M * dziennika N)

Oblicza sumę dwóch zestawów.

unionMany

-

-

-

-

O (N1 * N2...)

Oblicza sumę sekwencji zestawów.

Rozpakuj

O(N)

O(N)

O(N)

-

-

Lista par dzieli na dwie listy.

unzip3

O(N)

O(N)

O(N)

-

-

Dzieli listy triples na trzy listy.

okna

-

-

O(N)

-

-

Zwraca sekwencji zwracające przesuwny windows zawierającego elementy, które są pobierane z sekwencji wejściowych.Każde okno jest zwracany jako świeże tablicy.

ZIP

O(N)

O(N)

O(N)

-

-

Łączy dwie kolekcje par do listy.Dwie listy musi być równe.

zip3

O(N)

O(N)

O(N)

-

-

Łączy trzy kolekcje do listy triples.Wykazy muszą posiadać równe długości.

Zobacz też

Inne zasoby

Typy F#

Materiały referencyjne dotyczące języka F#