F# koleksiyon türleri

Bu konuyu gözden geçirerek, belirli bir ihtiyaç için en uygun F# koleksiyon türünü belirleyebilirsiniz. Bu koleksiyon türleri, F# koleksiyon türlerinin nesne odaklı bir perspektif yerine işlevsel bir programlama perspektifinden tasarlanmalarında ad alanı türleri gibi .NET'te bulunan koleksiyon System.Collections.Generic türlerinden farklıdır. Daha açık ifadeyle, yalnızca dizi koleksiyonunda table öğeleri vardır. Bu nedenle, bir koleksiyonu değiştirerek özgün koleksiyonu değiştirmek yerine değiştirilen koleksiyonun bir örneğini oluşturabilirsiniz.

Koleksiyon türleri, nesnelerin depolandığı veri yapısı türünde de farklılık gösterir. Karma tablolar, bağlantılı listeler ve diziler gibi veri yapıları farklı performans özelliklerine ve farklı bir kullanılabilir işlem kümesine sahiptir.

Koleksiyon türleri tablosu

Aşağıdaki tabloda F# koleksiyon türleri yer alır.

Tür Description İlişkili Bağlantılar
Liste Aynı türe sahip, sıralanabilir bir dizi öğe. Bağlantılı liste olarak uygulanır. Listeler

Liste Modülü
Dizi Aynı türe sahip ardışık veri öğelerinin sabit boyutlu, sıfır tabanlı, tarifeli koleksiyonu. Diziler

Dizi Modülü

Array2D Modülü

Array3D Modülü
seq Hepsi tek bir türde olan mantıksal bir öğe dizisi. Diziler özellikle büyük, sıralı bir veri koleksiyonunuz olduğunda ama tüm öğeleri kullanmayı beklemeyebilirsiniz. Tek tek dizi öğeleri yalnızca gerekli olarak hesaplanır, bu nedenle bir dizi tüm öğeler kullanılmazsa bir listeden daha iyi performans sergiler. Diziler, için diğer seq<'T> ad olan türüyle temsil IEnumerable<T> eder. Bu nedenle, .NET Framework herhangi bir System.Collections.Generic.IEnumerable<'T> tür bir dizi olarak kullanılabilir. Diziler

Seq Modülü
Harita Öğelerin sabit bir sözlüğü. Öğelere anahtarla erişilir. Harita Modülü
Ayarla İkili ağaçları temel alan sabit bir küme; burada karşılaştırma, arabirim uygulamalarını anahtar değerlerde kullanan F# yapısal System.IComparable karşılaştırma işlevidir. Modülü Ayarla

İşlev tablosu

Bu bölüm, F# koleksiyon türlerinde kullanılabilen işlevleri karşılar. İşlevin hesaplama karmaşıklığı verilir; burada N ilk koleksiyonun boyutu, M ise varsa ikinci koleksiyonun boyutudur. Tire (-) bu işlevin koleksiyonda kullanılabilir olmadığını gösterir. Diziler yavaş değerlendirilene kadar, O(1) gibi bir işlev hemen döndürebilir, ancak yine de numaralandıkları zaman sıranın Seq.distinct performansını etkiler.

İşlev Dizi Liste Sequence Harita Ayarla Description
Ekleme O(N) O(N) O(N) - - İlk koleksiyonun öğelerini ve ardından ikinci koleksiyonun öğelerini içeren yeni bir koleksiyon döndürür.
add - - - O(log(N)) O(log(N)) öğesi eklenmiş yeni bir koleksiyon döndürür.
ortalama O(N) O(N) O(N) - - Koleksiyonda öğelerin ortalamasını döndürür.
averageBy O(N) O(N) O(N) - - Her öğeye uygulanan sağlanan işlevin sonuçlarının ortalamasını döndürür.
blit O(N) - - - - Dizinin bir bölümünü kopyalar.
cache - - O(N) - - Bir dizideki öğeleri hesaplar ve depolar.
atama - - O(N) - - Öğeleri belirtilen türe dönüştürür.
Seçin O(N) O(N) O(N) - - Verilen işlevi listenin f her öğesine x uygular. işlevinin döndür olduğu her öğenin sonuçlarını içeren listeyi Some(f(x)) döndürür.
Topla O(N) O(N) O(N) - - Verilen işlevi koleksiyonun her öğesine uygular, tüm sonuçları birleştirir ve birleşik listeyi döndürür.
compareWith - - O(N) - - Verilen karşılaştırma işlevini kullanarak iki diziyi karşılar, öğeye göre öğesi.
concat O(N) O(N) O(N) - - Verilen numaralamaların birleştirilmiş tek bir numaralama olarak sıralarını birleştirir.
contains - - - - O(log(N)) Küme belirtilen öğeyi içeriyorsa true döndürür.
containsKey - - - O(log(N)) - Bir öğenin bir eşlemenin etki alanında olup olmadığını sınır.
count - - - - O(N) Kümedeki öğelerin sayısını döndürür.
countBy - - O(N) - - Bir dizideki her öğeye anahtar oluşturma işlevi uygular ve benzersiz anahtarları ve özgün dizideki oluşum sayısını döndüren bir dizi döndürür.
kopyalama O(N) - O(N) - - Koleksiyonu kopyalar.
oluşturmaya O(N) - - - - Başlangıçta verilen değer olan tüm öğelerden bir dizi oluşturur.
Gecikme - - O(1) - - Bir sıranın verilen gecikmeli belirtimlerinden bir dizi döndürür.
difference - - - - O(M * günlüğü (N)) İkinci kümenin öğelerinin ilk kümeden kaldırıldığı yeni bir küme döndürür.
distinct O(1)* Girişler üzerinde genel karma ve eşitlik karşılaştırmaları göre yinelenen girişler içeren bir dizi döndürür. Bir öğe dizide birden çok kez oluşursa, sonraki oluşumlar atılır.
distinctBy O(1)* Verilen anahtar oluşturma işlevinin döndür verdiği anahtarlarda genel karma ve eşitlik karşılaştırmaları göre yinelenen girişler içeren bir dizi döndürür. Bir öğe dizide birden çok kez oluşursa, sonraki oluşumlar atılır.
empty O(1) O(1) O(1) O(1) O(1) Boş bir koleksiyon oluşturur.
Var O(N) O(N) O(N) O(log(N)) O(log(N)) Dizideki herhangi bir öğenin verilen önkate göre olup olmadığını sıyr.
exists2 O(min(N,M)) - O(min(N,M)) Giriş dizilerinin karşılık gelen herhangi bir öğe çiftinin verilen önkate uygun olup olmadığını test eder.
fill O(N) Dizi öğelerinin aralığını verilen değere ayarlar.
filtre O(N) O(N) O(N) O(N) O(N) Yalnızca belirtilen predicate tarafından döndüren koleksiyonun öğelerini içeren yeni bir koleksiyon true döndürür.
find O(N) O(N) O(N) O(log(N)) - Verilen işlevin döndür olduğu ilk öğeyi true döndürür. Böyle System.Collections.Generic.KeyNotFoundException bir öğe yoksa döndürür.
Findındex O(N) O(N) O(N) - - Dizideki verilen önkate göre ilk öğenin dizinini döndürür. Hiçbir System.Collections.Generic.KeyNotFoundException öğenin önkateyi karşılayamamaları gerekir.
findKey - - - O(log(N)) - İşlevi koleksiyonda her eşlemede değerlendirir ve işlevinin döndür olduğu ilk eşlemenin anahtarını true döndürür. Böyle bir öğe yoksa, bu işlev öğesini System.Collections.Generic.KeyNotFoundException verir.
kat O(N) O(N) O(N) O(N) O(N) Hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığını iş parçacığını kullanarak koleksiyonun her öğesine bir işlev uygular. Giriş işlevi f ise ve öğeler i0... iN, bu işlev f(... (f s i0)...) Inç.
fold2 O(N) O(N) - - - İki koleksiyonun ilgili öğelerine bir işlev uygular, hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığı uygular. Koleksiyonların aynı boyutlara sahip olması gerekir. Giriş işlevi f ise ve öğeler i0... iN ve j0... jN, bu işlev f(... (f s i0 j0)...) iN jN.
Foldback O(N) O(N) - O(N) O(N) Hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığını iş parçacığını kullanarak koleksiyonun her öğesine bir işlev uygular. Giriş işlevi f ise ve öğeler i0... iN, bu işlev f i0'yi (... (f iN'ler)).
foldBack2 O(N) O (N) - - - İki koleksiyonun karşılık gelen öğelerine bir işlev uygular ve hesaplama aracılığıyla bir Biriktiricinin bağımsız değişkenini akıtma. Koleksiyonlar aynı boyutlarda olmalıdır. Giriş işlevi f ise ve öğeler i0... ve Içinde j0... jN, bu işlev f i0 j0 (...) hesaplar. (jN 'de f)).
ForAll O (N) O (N) O (N) O (N) O (N) Koleksiyondaki tüm öğelerin verilen koşulu karşılayıp karşılamadığını sınar.
forall2 O (N) O (N) O (N) - - Koleksiyonda karşılık gelen tüm öğelerin belirtilen koşulu ikili olarak karşılayıp karşılamadığını sınar.
al/n O (1) O (N) O (N) - - Koleksiyondan dizinini verilen bir öğeyi döndürür.
başlı - O (1) O (1) - - Koleksiyonun ilk öğesini döndürür.
init O (N) O (N) O (1) - - Öğeleri hesaplamak için boyut ve Oluşturucu işlevi verilen bir koleksiyon oluşturur.
Initınfinite - - O (1) - - Yinelendiğinde, verilen işlevi çağırarak birbirini izleyen öğeleri döndüren bir dizi oluşturur.
intersect - - - - O (günlük (N) * günlük (M)) İki kümenin kesişimini hesaplar.
intersectMany - - - - O (N1 * N2...) Bir küme dizisinin kesişimini hesaplar. Dizi boş olmamalıdır.
isEmpty O (1) O (1) O (1) O (1) - trueKoleksiyonun boş olup olmadığını döndürür.
isProperSubset - - - - O (M * günlüğü (N)) trueİlk küme öğelerinin ikinci küme içinde olup olmadığını ve ikinci küme en az bir öğesinin ilk küme içinde olup olmadığını döndürür.
isProperSuperset - - - - O (M * günlüğü (N)) trueİkinci küme tüm öğeleri ilk küme içinde ise ve ilk küme en az bir öğesi ikinci küme içinde değilse, döndürür.
isSubset - - - - O (M * günlüğü (N)) trueİlk küme öğelerinin ikinci küme içinde olup olmadığını döndürür.
isSuperset - - - - O (M * günlüğü (N)) trueİkinci küme öğelerinin ilk küme içinde olup olmadığını döndürür.
Pi O (N) O (N) O (N) O (N) O (N) Verilen işlevi koleksiyonun her öğesine uygular.
iteri O (N) O (N) O (N) - - Verilen işlevi koleksiyonun her öğesine uygular. İşleve geçirilen tamsayı, öğenin dizinini gösterir.
iteri2 O (N) O (N) - - - Verilen işlevi, iki dizide eşleşen indekslerden çizilmiş bir öğe çiftine uygular. İşleve geçirilen tamsayı, öğelerin dizinini gösterir. İki dizi aynı uzunlukta olmalıdır.
iter2 O (N) O (N) O (N) - - Verilen işlevi, iki dizide eşleşen indekslerden çizilmiş bir öğe çiftine uygular. İki dizi aynı uzunlukta olmalıdır.
Son O (1) O (N) O (N) - - Geçerli koleksiyondaki son öğeyi döndürür.
length O (1) O (N) O (N) - - Koleksiyondaki öğe sayısını döndürür.
map O (N) O (N) O (1) - - Öğeleri verilen işlevin dizinin her öğesine uygulanması sonucu olan bir koleksiyon oluşturur.
MAP2 O (N) O (N) O (1) - - Öğeleri verilen işlevi iki koleksiyonun karşılık gelen öğelerine ikili olarak uygulamanın sonuçları olan bir koleksiyon oluşturur. İki giriş dizisi aynı uzunlukta olmalıdır.
map3 - O (N) - - - Öğeleri verilen işlevi üç koleksiyonun karşılık gelen öğelerine aynı anda uygulama sonuçları olan bir koleksiyon oluşturur.
hatası O (N) O (N) O (N) - - Öğeleri verilen işlevin dizinin her öğesine uygulanması sonucu olan bir dizi oluşturur. İşleve geçirilen tamsayı dizin, dönüştürülmekte olan öğenin dizinini gösterir.
mapi2 O (N) O (N) - - - Öğeleri, bu iki koleksiyonun karşılık gelen öğelerine, öğelerin dizinini geçirerek verilen işlevi uygulamanın sonuçları olan bir koleksiyon oluşturur. İki giriş dizisi aynı uzunlukta olmalıdır.
max O (N) O (N) O (N) - - En büyük işleç kullanılarak karşılaştırılan koleksiyondaki en büyük öğeyi döndürür.
maxBy O (N) O (N) O (N) - - İşlev sonucu üzerinde Max kullanılarak karşılaştırıldığında koleksiyondaki en büyük öğeyi döndürür.
maxElement - - - - O (günlük (N)) Küme için kullanılan sıralamaya göre küme içindeki en büyük öğeyi döndürür.
dk O (N) O (N) O (N) - - Min işleci kullanılarak karşılaştırılan koleksiyonda en az öğeyi döndürür.
minBy O (N) O (N) O (N) - - İşlev sonucunda Min işleci kullanılarak karşılaştırılan koleksiyondaki en az öğeyi döndürür.
minElement - - - - O (günlük (N)) Küme için kullanılan sıralamaya göre küme içindeki en düşük öğeyi döndürür.
ofArray - O (N) O (1) O (N) O (N) Verilen dizi ile aynı öğeleri içeren bir koleksiyon oluşturur.
ofList O (N) - O (1) O (N) O (N) Verilen liste ile aynı öğeleri içeren bir koleksiyon oluşturur.
ofSeq O (N) O (N) - O (N) O (N) Verilen sırayla aynı öğeleri içeren bir koleksiyon oluşturur.
yapılandırdı - - O (N) - - Giriş dizisindeki her öğenin bir dizisini ve yalnızca ikinci öğenin öncülü olarak döndürülen ilk öğesi hariç öncülü döndürür.
partition O (N) O (N) - O (N) O (N) Koleksiyonu iki koleksiyona böler. İlk koleksiyon, verilen koşulun döndürdüğü öğeleri içerir true ve ikinci koleksiyon verilen koşulun döndürdüğü öğeleri içerir false .
permute O (N) O (N) - - - Belirtilen PERMÜTASYONA göre tüm öğeleri içeren bir dizi döndürür.
seçin O (N) O (N) O (N) O (günlük (N)) - İşlevin bazılarını döndürdüğü ilk sonucu döndüren ardışık öğelere verilen işlevi uygular. İşlev hiçbir şekilde hiçbir şekilde döndürmezse, System.Collections.Generic.KeyNotFoundException tetiklenir.
readonly - - O (N) - - Verilen dizi nesnesini temsil eden bir dizi nesnesi oluşturur. Bu işlem, bir tür dönüştürme işleminin özgün sırayı yeniden bulamamasını ve mukutabilmesini sağlar. Örneğin, bir dizi verildiyse, döndürülen dizi dizinin öğelerini döndürür, ancak döndürülen dizi nesnesini bir diziye çevirebilirsiniz.
azal O (N) O (N) O (N) - - Koleksiyonun her öğesine bir işlev uygular ve hesaplama aracılığıyla bir biriktiricidir bağımsız değişkenini akıtma. Bu işlev, işlevi ilk iki öğeye uygulayarak başlar, bu sonucu, üçüncü öğesiyle birlikte işlevine geçirir ve bu şekilde devam eder. İşlev, nihai sonucu döndürür.
reduceBack O (N) O (N) - - - Koleksiyonun her öğesine bir işlev uygular ve hesaplama aracılığıyla bir biriktiricidir bağımsız değişkenini akıtma. Giriş işlevi f ise ve öğeler i0... Içinde, bu işlev f i0 (...) hesaplar. (-1 içinde f)).
remove - - - O (günlük (N)) O (günlük (N)) Haritanın etki alanından bir öğeyi kaldırır. Öğe yoksa, hiçbir özel durum harekete geçirilir.
çoğaltmak - O (N) - - - Verilen değere ayarlanan her öğe için belirtilen uzunluğun bir listesini oluşturur.
düzenleme O (N) O (N) - - - Öğeleri ters sırada olan yeni bir liste döndürür.
dığınız O (N) O (N) O (N) - - Koleksiyonun her öğesine bir işlev uygular ve hesaplama aracılığıyla bir biriktiricidir bağımsız değişkenini akıtma. Bu işlem, işlevi ikinci bağımsız değişkene ve listenin ilk öğesine uygular. İşlem daha sonra bu sonucu ikinci öğesiyle birlikte işleve geçirir ve bu şekilde devam eder. Son olarak, işlem ara sonuçların ve nihai sonucun listesini döndürür.
scanBack O (N) O (N) - - - FoldBack işlemine benzer, ancak hem ara hem de nihai sonuçları döndürür.
adet - - O (1) - O (1) Yalnızca bir öğe veren bir sıra döndürür.
set O (1) - - - - Bir dizinin bir öğesini belirtilen değere ayarlar.
Atla - - O (N) - - Temel alınan sıranın N öğelerini atlayan bir sıra döndürür ve sonra sıranın kalan öğelerini verir.
skipWhile - - O (N) - - Yinelendiğinde, belirtilen koşulun döndürdüğü sırada temeldeki sıranın öğelerini atlayan true ve sonra dizinin kalan öğelerini verdiği bir diziyi döndürür.
sort O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
O (N * günlük (n)) O (N * günlük (n)) - - Koleksiyonu öğe değerine göre sıralar. Öğeler karşılaştırmakullanılarak karşılaştırılır.
sortBy O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
O (N * günlük (n)) O (N * günlük (n)) - - Verilen projeksiyonun sağladığı anahtarları kullanarak verilen listeyi sıralar. Anahtarlar Comparekullanılarak karşılaştırılır.
sortInPlace O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
- - - - Bir dizinin öğelerini yerinde değiştirerek ve verilen karşılaştırma işlevini kullanarak sıralar. Öğeler Comparekullanılarak karşılaştırılır.
sortInPlaceBy O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
- - - - Bir dizinin öğelerini yerinde değiştirerek ve anahtarlar için verilen projeksiyonları kullanarak sıralar. Öğeler Comparekullanılarak karşılaştırılır.
sortInPlaceWith O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
- - - - Bir dizinin öğelerini yerinde değiştirerek ve sıralama olarak verilen karşılaştırma işlevini kullanarak sıralar.
sortWith O (N * günlük (n)) Ortalama

O (N ^ 2) en kötü durum
O (N * günlük (n)) - - - Sıralama olarak verilen karşılaştırma işlevini kullanarak bir koleksiyonun öğelerini sıralar ve yeni bir koleksiyon döndürür.
alt O (N) - - - - Dizin ve uzunluk başlangıcı tarafından belirtilen verilen alt aralığı içeren bir dizi oluşturur.
TOPLA O (N) O (N) O (N) - - Koleksiyondaki öğelerin toplamını döndürür.
sumBy O (N) O (N) O (N) - - Koleksiyonun her öğesine işlev uygulanarak oluşturulan sonuçların toplamını döndürür.
Connect - O (1) - - - Listeyi ilk öğesi olmadan döndürür.
take - - O (N) - - Sıranın belirtilen sayıya kadar olan öğelerini döndürür.
takeWhile - - O (1) - - Yinelendiğinde, belirtilen koşulun döndürdüğü sırada temel alınan sıranın öğelerini veren true ve daha fazla öğe döndürdüğü bir dizi döndürür.
toArray - O (N) O (N) O (N) O (N) Verilen koleksiyondan bir dizi oluşturur.
toList O (N) - O(N) O(N) O(N) Verilen koleksiyondan bir liste oluşturur.
toSeq O(1) O(1) - O(1) O(1) Verilen koleksiyondan bir dizi oluşturur.
Truncate - - O(1) - - Numara döndüren N öğeden fazlasını döndüren bir dizi döndürür.
tryFind O(N) O(N) O(N) O(log(N)) - Verilen bir önkate uygun bir öğeyi arar.
tryFindIndex O(N) O(N) O(N) - - Belirli bir geçerliliği yerine getirerek eşleşen öğenin dizinini (böyle bir öğe yoksa) None döndüren ilk öğeyi arar.
tryFindKey - - - O(log(N)) - Koleksiyonda verilen geçerliliği yerine getiren ilk eşlemenin anahtarını veya böyle bir öğe yoksa None döndürür.
tryPick O(N) O(N) O(N) O(log(N)) - Verilen işlevi, belirli bir değer için döndüren ilk sonucu döndürerek, başarılı Some öğelere uygular. Böyle bir öğe yoksa, işlemi None döndürür.
Açılmak - - O(N) - - Verilen hesaplamanın oluştur verdiği öğeleri içeren bir dizi döndürür.
birleşim - - - - O(M * günlüğü (N)) İki kümenin birlemlerini hesaplar.
unionMany - - - - O(N1 * N2...) Bir küme dizisinin birlemsini hesaplar.
Unzip O(N) O(N) O(N) - - Çift listesini iki listeye böler.
unzip3 O(N) O(N) O(N) - - Üçlüler listesini üç listeye böler.
Pencereli - - O(N) - - Giriş dizisinde çizilen öğeleri içeren kayan pencereler döndüren bir dizi döndürür. Her pencere yeni bir dizi olarak döndürülür.
Zip O(N) O(N) O(N) - - İki koleksiyonu bir çift listesi halinde birleştirir. İki liste eşit uzunlukta olmalıdır.
zip3 O(N) O(N) O(N) - - Üç koleksiyonu üçlü bir listede birleştirir. Listelerin uzunlukları eşit olmalıdır.

Ayrıca bkz.