F# koleksiyon türleri

Bu konuyu gözden geçirerek belirli bir gereksinime 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 tasarlanması açısından ad alanı içindekiler gibi System.Collections.Generic .NET'teki koleksiyon türlerinden farklıdır. Daha açık belirtmek gerekirse, yalnızca dizi koleksiyonunda değiştirilebilir öğeler bulunur. Bu nedenle, bir koleksiyonu değiştirdiğinizde, özgün koleksiyonu değiştirmek yerine değiştirilen koleksiyonun bir örneğini oluşturursunuz.

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ı kullanılabilir işlemler kümesine sahiptir.

Koleksiyon türleri tablosu

Aşağıdaki tabloda F# koleksiyon türleri gösterilmektedir.

Type Açıklama İlişkili Bağlantılar
Liste Aynı türde sıralı, sabit bir öğe serisi. Bağlı liste olarak uygulanır. Listeler

Liste Modülü
Dizi Tümü aynı türdeki ardışık veri öğelerinin sabit boyutlu, sıfır tabanlı, değiştirilebilir koleksiyonu. Diziler

Dizi Modülü

Array2D Modülü

Array3D Modülü
seq Tümü bir tür olan mantıksal öğe serisi. Diziler özellikle büyük, sıralı bir veri koleksiyonunuz olduğunda kullanışlıdır ancak tüm öğeleri kullanmayı beklemeniz gerekmez. Tek tek sıra öğeleri yalnızca gerektiği gibi hesaplanır, bu nedenle tüm öğeler kullanılmazsa bir dizi bir listeden daha iyi performans sergileyebilir. Sıralar türüyle seq<'T> temsil edilir ve bu türü için IEnumerable<T>bir diğer addır. Bu nedenle, uygulayan System.Collections.Generic.IEnumerable<'T> herhangi bir .NET Framework türü bir sıra olarak kullanılabilir. Sıralar

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

İşlevler tablosu

Bu bölümde, F# koleksiyon türlerinde kullanılabilen işlevler karşılaştırılır. İşlevin hesaplama karmaşıklığı verilir; burada N, ilk koleksiyonun boyutu, M ise varsa ikinci koleksiyonun boyutudur. Tire (-), bu işlevin koleksiyonda kullanılamadığını gösterir. Diziler gevşek olarak değerlendirildiğinden, numaralandırıldığında sıranın performansını etkilemeye devam etse de, hemen döndürdüğü için gibi bir işlev Seq.distinct O(1) olabilir.

İşlev Dizi Liste Sequence Harita Ayarla Açıklama
append 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)) öğesinin eklendiği yeni bir koleksiyon döndürür.
Ortalama O(N) O(N) O(N) - - Koleksiyondaki öğ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 dizinin öğelerini 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 f listenin her öğesine x uygular. işlevinin döndürdüğü her öğenin sonuçlarını içeren listeyi döndürür Some(f(x)).
Toplamak O(N) O(N) O(N) - - Verilen işlevi koleksiyonun her öğesine uygular, tüm sonuçları birleştirir ve birleştirilmiş listeyi döndürür.
compareWith - - O(N) - - Verilen karşılaştırma işlevini (öğeye göre öğe) kullanarak iki diziyi karşılaştırır.
concat O(N) O(N) O(N) - - Verilen sabit listesi numaralandırmasını tek bir birleştirilmiş sabit listesi olarak birleştirir.
içerir - - - - 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ınar.
count - - - - O(N) Kümedeki öğelerin sayısını döndürür.
countBy - - O(N) - - Bir dizinin her öğesine anahtar oluşturan bir işlev uygular ve benzersiz anahtarları ve özgün dizideki oluşum sayısını veren 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 oluşan bir dizi oluşturur.
gecikme süresi - - O(1) - - Bir dizinin belirtilen gecikmeli belirtiminden oluşturulan bir dizi döndürür.
difference - - - - O(M*log(N)) İkinci kümenin öğelerinin ilk kümeden kaldırıldığı yeni bir küme döndürür.
ayrı O(1)* Girişlerdeki genel karma ve eşitlik karşılaştırmalarına göre yinelenen girdi içermeyen bir dizi döndürür. Bir öğe dizide birden çok kez gerçekleşirse, sonraki oluşumlar atılır.
distinctBy O(1)* Verilen anahtar oluşturma işlevinin döndürdüğü anahtarlardaki genel karma ve eşitlik karşılaştırmalarına göre yinelenen girdi içermeyen bir dizi döndürür. Bir öğe dizide birden çok kez gerçekleşirse, 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)) Dizinin herhangi bir öğesinin verilen koşulu karşılayıp sağlamadığını test eder.
exists2 O(min(N,M)) - O(min(N,M)) Giriş dizilerinin ilgili öğe çiftlerinin verilen koşulu karşılayıp sağlamadığını test eder.
fill O(N) Dizinin öğe aralığını verilen değere ayarlar.
filtrele O(N) O(N) O(N) O(N) O(N) Yalnızca belirtilen koşulun döndürdüğü koleksiyonun öğelerini içeren yeni bir koleksiyon döndürür true.
find O(N) O(N) O(N) O(log(N)) - Verilen işlevin döndürdüğü ilk öğeyi döndürür true. Böyle bir öğe yoksa döndürür System.Collections.Generic.KeyNotFoundException .
Findındex O(N) O(N) O(N) - - Verilen koşulu karşılayan dizideki ilk öğenin dizinini döndürür. System.Collections.Generic.KeyNotFoundException Koşula hiçbir öğe uymazsa yükseltir.
findKey - - - O(log(N)) - işlevini koleksiyondaki her eşlemede değerlendirir ve işlevin döndürdüğü ilk eşlemenin anahtarını döndürür true. Böyle bir öğe yoksa, bu işlev oluşturur System.Collections.Generic.KeyNotFoundException.
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ığı oluşturarak koleksiyonun her öğesine bir işlev uygular. Giriş işlevi f ise ve öğeler i0 ise... iN, bu işlev f (... (f s i0)...) Inç.
katlama2 O(N) O(N) - - - bir işlevi, hesaplama aracılığıyla bir biriktirici bağımsız değişkenini iş parçacığı oluşturarak iki koleksiyonun karşılık gelen öğelerine uygular. Koleksiyonların boyutları aynı olmalıdır. Giriş işlevi f ise ve öğeler i0 ise... 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ığı oluşturarak koleksiyonun her öğesine bir işlev uygular. Giriş işlevi f ise ve öğeler i0 ise... iN, bu işlev f i0 (... (f iN)).
foldBack2 O(N) O(N) - - - bir işlevi, hesaplama aracılığıyla bir biriktirici bağımsız değişkenini iş parçacığı oluşturarak iki koleksiyonun karşılık gelen öğelerine uygular. Koleksiyonların boyutları aynı olmalıdır. Giriş işlevi f ise ve öğeler i0 ise... iN ve j0... jN, bu işlev f i0 j0 (... (f iN jN)).
Forall O(N) O(N) O(N) O(N) O(N) Koleksiyonun tüm öğelerinin verilen koşulu karşılayıp karşılamadığını test eder.
forall2 O(N) O(N) O(N) - - Koleksiyonun ilgili tüm öğelerinin verilen koşulu çift yönde karşılayıp karşılamadığını test eder.
get / nth O(1) O(N) O(N) - - Dizinine göre koleksiyondan bir öğe döndürür.
Kafa - O(1) O(1) - - Koleksiyonun ilk öğesini döndürür.
init O(N) O(N) O(1) - - Boyut ve öğeleri hesaplamak için bir oluşturucu işlevi verilen bir koleksiyon oluşturur.
initInfinite - - O(1) - - Yinelendiğinde, verilen işlevi çağırarak ardışık öğeler döndüren bir dizi oluşturur.
kesişim - - - - O(log(N)*log(M)) İki kümenin kesişimini hesaplar.
intersemany - - - - O(N1*N2...) Küme dizisinin kesişimini hesaplar. Sıra boş olmamalıdır.
isEmpty O(1) O(1) O(1) O(1) - Koleksiyon boşsa döndürür true .
isProperSubset - - - - O(M*log(N)) İlk kümenin tüm öğeleri ikinci kümedeyse ve ikinci kümenin en az bir öğesi ilk kümede değilse döndürür true .
isProperSuperset - - - - O(M*log(N)) İkinci kümenin tüm öğeleri ilk kümedeyse ve ilk kümenin en az bir öğesi ikinci kümede değilse döndürür true .
isSubset - - - - O(M*log(N)) İlk kümenin tüm öğeleri ikinci kümedeyse döndürür true .
isSuperset - - - - O(M*log(N)) İkinci kümenin tüm öğeleri ilk kümedeyse döndürür true .
ıter 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ı, öğesinin dizinini gösterir.
iteri2 O(N) O(N) - - - Verilen işlevi, iki dizideki eşleşen dizinlerden alınan 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 dizideki eşleşen dizinlerden alınan bir öğe çiftine uygular. İki dizi aynı uzunlukta olmalıdır.
Sonuncu O(1) O(N) O(N) - - Geçerli koleksiyondaki son öğeyi döndürür.
uzunluk O(1) O(N) O(N) - - Koleksiyondaki öğe sayısını döndürür.
map O(N) O(N) O(1) - - Öğeleri, dizinin her öğesine verilen işlevi uygulamanın sonuçları olan bir koleksiyon oluşturur.
map2 O(N) O(N) O(1) - - Öğeleri, verilen işlevi iki koleksiyonun ilgili öğelerine çift yönlü olarak uygulamanın sonuçları olan bir koleksiyon oluşturur. İki giriş dizisi aynı uzunlukta olmalıdır.
harita3 - O(N) - - - Öğeleri, verilen işlevi aynı anda üç koleksiyonun ilgili öğelerine uygulamanın sonuçları olan bir koleksiyon oluşturur.
Mapı O(N) O(N) O(N) - - Öğeleri, verilen işlevi dizinin her öğesine uygulamanın sonuçları olan bir dizi oluşturur. İşleve geçirilen tamsayı dizini, dönüştürülmekte olan öğenin dizinini gösterir.
mapi2 O(N) O(N) - - - Öğeleri, verilen işlevi iki koleksiyonun karşılık gelen öğelerine çift yönlü uygulamanın sonuçları olan ve öğelerin dizinini de geçiren 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ıldığında koleksiyondaki en büyük öğeyi döndürür.
maxBy O(N) O(N) O(N) - - İşlev sonucunda max kullanılarak karşılaştırıldığında koleksiyondaki en büyük öğeyi döndürür.
maxElement - - - - O(log(N)) Küme için kullanılan sıralamaya göre kümedeki 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ıldığında koleksiyondaki en küçük öğeyi döndürür.
minBy O(N) O(N) O(N) - - İşlev sonucunda min işlecini kullanarak karşılaştırıldığında koleksiyondaki en küçük öğeyi döndürür.
minElement - - - - O(log(N)) Küme için kullanılan sıralamaya göre kümedeki en düşük öğeyi döndürür.
ofArray - O(N) O(1) O(N) O(N) Verilen diziyle aynı öğeleri içeren bir koleksiyon oluşturur.
ofList O(N) - O(1) O(N) O(N) Verilen listeyle aynı öğeleri içeren bir koleksiyon oluşturur.
ofSeq O(N) O(N) - O(N) O(N) Verilen diziyle aynı öğeleri içeren bir koleksiyon oluşturur.
Ikili - - O(N) - - Yalnızca ikinci öğenin öncül olarak döndürülen ilk öğe dışında giriş dizisindeki ve öncüldeki her öğenin sırasını döndürür.
partition O(N) O(N) - O(N) O(N) Koleksiyonu iki koleksiyona böler. İlk koleksiyon, belirtilen koşulun döndürdüğü trueöğeleri, ikinci koleksiyon ise verilen koşulun döndürdüğü falseöğeleri içerir.
permute O(N) O(N) - - - Belirtilen permütasyona göre tüm öğelerin permütasyonunu içeren bir dizi döndürür.
Almak O(N) O(N) O(N) O(log(N)) - Verilen işlevi ardışık öğelere uygular ve işlevin Some döndürdüğü ilk sonucu döndürür. İşlev hiçbir zaman Some döndürmezse oluşturulur System.Collections.Generic.KeyNotFoundException .
readonly - - O(N) - - Verilen sıra nesnesine temsilci olarak atanan bir sıra nesnesi oluşturur. Bu işlem, tür atamasının özgün diziyi yeniden bulmasını ve sessize almamasını sağlar. Örneğin, bir dizi verilirse, döndürülen dizi dizinin öğelerini döndürür, ancak döndürülen dizi nesnesini bir diziye dönüştüremezsiniz.
Azaltmak O(N) O(N) O(N) - - Hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığı oluşturarak koleksiyonun her öğesine bir işlev uygular. Bu işlev, işlevi ilk iki öğeye uygulayarak başlar, bu sonucu üçüncü öğeyle birlikte işleve geçirir ve bu şekilde devam eder. işlevi nihai sonucu döndürür.
reduceBack O(N) O(N) - - - Hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığı oluşturarak koleksiyonun her öğesine bir işlev uygular. Giriş işlevi f ise ve öğeler i0 ise... iN, bu işlev f i0 (... (f iN-1 iN)).
remove - - - O(log(N)) O(log(N)) Bir öğeyi eşlemenin etki alanından kaldırır. Öğesi yoksa özel durum tetiklenmemiştir.
Çoğaltmak - O(N) - - - Belirtilen değere ayarlanmış her öğeyle belirtilen uzunlukta bir liste oluşturur.
Rev O(N) O(N) - - - Öğeleri ters sırada içeren yeni bir liste döndürür.
Tarama O(N) O(N) O(N) - - Hesaplama aracılığıyla bir biriktirici bağımsız değişkeni iş parçacığı oluşturarak koleksiyonun her öğesine bir işlev uygular. Bu işlem, işlevi ikinci bağımsız değişkene ve listenin ilk öğesine uygular. İşlem daha sonra bu sonucu ikinci öğeyle birlikte işleve geçirir ve bu şekilde devam eder. Son olarak, işlem ara sonuçların listesini ve nihai sonucu döndürür.
scanBack O(N) O(N) - - - foldBack işlemine benzer, ancak hem ara hem de son sonuçları döndürür.
Singleton - - O(1) - O(1) Yalnızca bir öğe veren bir dizi döndürür.
set O(1) - - - - Bir dizinin öğesini belirtilen değere ayarlar.
skip - - O(N) - - Temel alınan dizinin N öğelerini atlayan ve ardından dizinin kalan öğelerini veren bir dizi döndürür.
Skipwhile - - O(N) - - Yinelendiğinde, verilen koşul döndürürken true temel dizi öğelerini atlayan ve ardından dizinin kalan öğelerini veren bir dizi döndürür.
sıralayın O(N*log(N)) ortalaması

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

O(N^2) en kötü durum
O(N*log(N)) O(N*log(N)) - - Verilen listeyi, verilen projeksiyon tarafından sağlanan anahtarları kullanarak sıralar. Anahtarlar karşılaştırma kullanılarak karşılaştırılır.
sortInPlace O(N*log(N)) ortalaması

O(N^2) en kötü durum
- - - - Bir dizinin öğelerini yerinde sessize alarak ve verilen karşılaştırma işlevini kullanarak sıralar. Öğeler karşılaştırma kullanılarak karşılaştırılır.
sortInPlaceBy O(N*log(N)) ortalaması

O(N^2) en kötü durum
- - - - Bir dizinin öğelerini yerinde sessize alarak ve anahtarlar için verilen projeksiyonu kullanarak sıralar. Öğeler karşılaştırma kullanılarak karşılaştırılır.
sortInPlaceWith O(N*log(N)) ortalaması

O(N^2) en kötü durum
- - - - Bir dizinin öğelerini yerinde sessize alarak ve verilen karşılaştırma işlevini düzen olarak kullanarak sıralar.
sortWith O(N*log(N)) ortalaması

O(N^2) en kötü durum
O(N*log(N)) - - - Verilen karşılaştırma işlevini düzen olarak kullanarak ve yeni bir koleksiyon döndürerek bir koleksiyonun öğelerini sıralar.
alt O(N) - - - - Dizin ve uzunluk başlatılarak 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) - - İşlev koleksiyonun her öğesine uygulanarak oluşturulan sonuçların toplamını döndürür.
Kuyruk - O(1) - - - Listeyi ilk öğesi olmadan döndürür.
take - - O(N) - - Belirtilen sayıya kadar sıranın öğelerini döndürür.
Takewhile - - O(1) - - Yinelendiğinde, verilen koşul döndürürken true temel dizi öğelerini veren ve sonra başka öğe döndürmeden 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) - - Numaralandırıldığında N öğeden fazlasını döndüren bir dizi döndürür.
tryFind O(N) O(N) O(N) O(log(N)) - Belirli bir koşula uygun bir öğeyi arar.
tryFindIndex O(N) O(N) O(N) - - Belirli bir koşula uyan ilk öğeyi arar ve eşleşen öğenin dizinini döndürür veya None böyle bir öğe yoksa.
tryFindKey - - - O(log(N)) - Verilen koşulu karşılayan koleksiyondaki ilk eşlemenin anahtarını döndürür veya böyle bir öğe yoksa döndürür None .
tryPick O(N) O(N) O(N) O(log(N)) - Verilen işlevi ardışık öğelere uygular ve işlevin bazı değerler için döndürdüğü ilk sonucu döndürür Some . Böyle bir öğe yoksa, işlem döndürür None.
Açılmak - - O(N) - - Verilen hesaplamanın oluşturduğu öğeleri içeren bir dizi döndürür.
birleşim - - - - O(M*log(N)) İki kümenin birleşimini hesaplar.
unionMany - - - - O(N1*N2...) Küme dizisinin birleşimini hesaplar.
Unzip O(N) O(N) O(N) - - Çiftlerin listesini iki listeye böler.
unzip3 O(N) O(N) O(N) - - Üçlülerin listesini üç listeye böler.
Pencereli - - O(N) - - Giriş dizisinden çekilen öğeleri içeren kayan pencereleri veren 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 çiftler listesinde birleştirir. İki liste eşit uzunlukta olmalıdır.
zip3 O(N) O(N) O(N) - - Üç koleksiyonu üçlüler listesinde birleştirir. Listelerin uzunlukları eşit olmalıdır.

Ayrıca bkz.