Aracılığıyla paylaş


F# koleksiyon türleri

Bu konuyu inceleyerek, hangi F# koleksiyon türü en iyi belirli bir gereksinimi karşılayacak belirleyebilirsiniz. Bu koleksiyon türleri içinde olanlar gibi .net Framework koleksiyon türleri farklı System.Collections.Generic ad, nesne yönelimli bir Perspektif yerine işlevsel programlama açısından F# koleksiyon türleri tasarlanmış olduğunu. Özellikle de, dizi koleksiyon kesilebilir öğesine sahip. Bu nedenle, koleksiyonunu değiştirdiğinizde özgün koleksiyonu değiştirme yerine değiştirilmiş koleksiyonu bir örneğini oluşturur.

Koleksiyon türleri, nesnelerin saklandığı bir veri yapısı tipinde farklılık gösterir. Karma tablo, bağlantılı listeler ve Diziler gibi veri yapıları farklı performans özellikleri ve kullanılabilir işlemleri farklı bir kümesi vardır.

F# koleksiyon türleri

F# koleksiyon türleri aşağıdaki tabloda gösterilmiştir.

Tür

Description

İlgili bağlantılar

Liste

Aynı türdeki öğeleri bir sıralı, Immutable serisi. Bağlantılı liste olarak uygulanır.

Listeleri (F#)

Listesi modülü

Dizi

Ardışık veri öğelerinin tümü aynı türde bir sabit boyutlu, sıfır tabanlı, kesilebilir koleksiyonu.

Diziler (F#)

Dizi Modülü

Array2D Modülü

Array3D Modülü

seq

Tümü, bir tür öğeleri mantıksal bir dizi. Sahip büyük, veri toplama sipariş edilen, ancak tüm öğelerini kullanmak mutlaka beklemeyen serileri özellikle yararlı olur. Öğeleri yalnızca olarak hesaplanan tek tek sıra yoksa bir sıralı bir liste daha iyi gerçekleştirebilirsiniz böylece tüm öğeleri kullanılan gerekli. Seq <'T> sıraları temsil edilir yazım, IEnumerable <T> bir diğer adıdır. Bu nedenle, uygulayan herhangi bir .net Framework türü IEnumerable<T> bir dizi olarak kullanılabilir.

Sıraları (F#)

SEQ Modülü

Map

Öğelerin Immutable sözlük. Öğeleri anahtarının erişilir.

Harita Modülü

Set

Burada karşılaştırma, F# yapısal karşılaştırma işlevi, potansiyel uygulamaları kullanan ikili aðaçlarý dayalı Immutable ayarlanmış bir IComparable anahtar değerleri arabirimde.

Modülünü tanımla

Hh967652.collapse_all(tr-tr,VS.110).gifİşlev tablosu

Bu bölümde F# koleksiyonu türlerinde kullanılabilir işlevler karşılaştırır. Burada n ilk koleksiyon boyutunu ve m ikinci koleksiyonu varsa boyutudur işlevi hesaplama karmaşıklığı verilir. Tire (-) gösterir koleksiyonun bu işlev kullanılamaz. Sıraları lazily değerlendirildiği için hemen verir çünkü hala numaralandırılan sırası performansını etkiler, ancak Seq.distinct gibi bir işlev o(1) olabilir.

İşlev

Dizi

Liste

Sıra

Map

Set

Description

eklemek

O(M)

O(N)

O(N)

-

-

İkinci koleksiyon öğeleri tarafından izlenen ilk koleksiyonun öğelerini içeren yeni bir koleksiyon döndürür.

ekleme

-

-

-

O (log n)

O (log n)

Eklenen öðe ile yeni bir koleksiyon döndürür.

ortalama

O(N)

O(N)

O(N)

-

-

Koleksiyondaki öðeleri ortalamasını verir.

ile ortalama

O(N)

O(N)

O(N)

-

-

Her öğeye uygulanan sağlanan işlevinin sonuçlarını ortalamasını verir.

blit

O(N)

-

-

-

-

Bir dizinin bir bölümü kopyalar.

önbellek

-

-

O(N)

-

-

Hesaplar ve bir dizi öğelerini saklar.

çevirme

-

-

O(N)

-

-

Öğeleri belirtilen türe dönüştürür.

seç

O(N)

O(N)

O(N)

-

-

Belirli bir işlev geçerli f her öğe için x listesi. Her öğe için sonuçları içeren liste burada işlevi döndürür Some(f(x)).

toplama

O(N)

O(N)

O(N)

-

-

Belirli bir işlev her koleksiyon öğesine uygulanır, tüm sonuçları birleştirir ve birleştirilmiş listesini döndürür.

karşılaştırma

-

-

O(N)

-

-

Öğe verilen karşılaştırma işlevini kullanarak iki sıraları karşılaştırır.

art arda ekleme

O(N)

O(N)

O(N)

-

-

Verilen sabit listenin sabit listesini art arda eklenmiş tek bir sabit liste olarak birleştirir.

contains

-

-

-

-

O (log n)

Belirtilen öğe kümesi içeriyorsa true deðerini verir.

containsKey

-

-

-

O (log n)

-

Harita etki alanında bir öğe olup olmadýðýný sýnar.

count

-

-

-

-

O(N)

Kümedeki öğelerin sayısını döner.

sayma

-

-

O(N)

-

-

Anahtar üretme işlevi her bir dizi öğesine uygulanır ve benzersiz anahtarlar ve kendi özgün sıra yinelenme sayýsýný ortaya çıkarır sırası döndürür.

copy

O(N)

-

O(N)

-

-

Koleksiyon kopyalar.

oluşturmak

O(N)

-

-

-

-

Tüm başlangıçta belirli bir değeri olan tüm öğelerin bir dizi oluşturur.

gecikme

-

-

O(1)

-

-

Yerleşik olan bir sıra, sırasından verilen Gecikmeli belirtiminden döndürür.

difference

-

-

-

-

O (m * n günlük)

İlk kümesinden kaldırılır ikinci küme öğelere sahip yeni bir kümesi verir.

ayrı

O(1) *

Girdiler üzerinde genel karma ve eşitlik karşılaştırmalarına göre yinelenen girdi içermeyen bir dizi döner. Öğe sırasını birden çok kez ortaya çıkarsa, sonraki tekrarı atılır.

ile ayrı

O(1) *

Verilen anahtar oluşturma işlevini verir tuşların üzerinde genel karma ve eşitlik karşılaştırmaları göre hiçbir yinelenen girdileri içeren bir sıra döndürür. Öğe sırasını birden çok kez ortaya çıkarsa, sonraki tekrarı atılır.

boş

O(1)

O(1)

O(1)

O(1)

O(1)

Boş bir koleksiyon oluşturur.

vardır

O(N)

O(N)

O(N)

O (log n)

O (log n)

Herhangi bir öğe sırası verilen yüklemi karşılayıp karşılamadığını sınar.

var olma

O(Min(N,M))

-

O(Min(N,M))

Herhangi bir giriş sıraları karşılık gelen elemanları çiftinin verilen yüklemi karşılayıp karşılamadığını sınar.

dolgu

O(N)

Bir dizinin öğelerini aralığını verilen değere ayarlar.

süzgeç

O(N)

O(N)

O(N)

O(N)

O(N)

Yalnızca kendisi için verilen yüklemi verir 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 true döndüğü ilk öğeyi döner. İade KeyNotFoundException bu tür bir öğe varsa.

dizin bulma

O(N)

O(N)

O(N)

-

-

Verilen karşılaştırma belirtimini sağlayan dizideki ilk öğenin dizinini döner. Harekete geçiren KeyNotFoundException hiçbir öğe yüklemi karşılayıp karşılamadığını.

findKey

-

-

-

O (log n)

-

Koleksiyondaki her eşleme işlevi değerlendirir ve ilk eşleme için anahtar burada işlevi döndürür true. Bu tür bir öğe varsa, bu işlev harekete geçiren KeyNotFoundException.

katlama

O(N)

O(N)

O(N)

O(N)

O(N)

İşlevi koleksiyonun her öğesine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. F giriş işlevidir ve öğeleri... içinde i0, Bu fonksiyon f (... hesaplar. (f s i0)...) .

fold2

O(N)

O(N)

-

-

-

Bir işlevi iki koleksiyonun öğelerine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. Koleksiyonların boyutunun aynı olması gerekir. F giriş işlevi ise ve i0,... ve... j0 öğeleridir jN, Bu fonksiyon f (... hesaplar. (f s i0 j0)...) jN. içinde

foldBack

O(N)

O(N)

-

O(N)

O(N)

İşlevi koleksiyonun her öğesine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. F giriş işlevidir ve öğeleri... içinde i0, bu işlev f i0 hesaplar (...(f S)).

foldBack2

O(N)

O(N)

-

-

-

Bir işlevi iki koleksiyonun öğelerine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. Koleksiyonların boyutunun aynı olması gerekir. F giriş işlevi ise ve i0,... ve... j0 öğeleridir jN, bu işlev f i0 j0 hesaplar (...(f jN S)).

hepsi

O(N)

O(N)

O(N)

O(N)

O(N)

Tüm öğeleri koleksiyonunun verilen yüklemi karşılamak olup olmadığını sınar.

hepsi2

O(N)

O(N)

O(N)

-

-

Tüm karşılık gelen öğeleri koleksiyonunun ikili verili yüklemi karşılamak olup olmadığını sınar.

GET / n.

O(1)

O(N)

O(N)

-

-

Bir öğenin endeksini verilen koleksiyonundan döndürür.

head

-

O(1)

O(1)

-

-

Koleksiyonun ilk öğesinden döndürür.

init

O(N)

O(N)

O(1)

-

-

Boyut ve bir oluşturucu işlevi öğeleri hesaplamak için verilen bir koleksiyon oluşturur.

initInfinite

-

-

O(1)

-

-

Bir sıra oluşturur, iterated, birbirini izleyen öğeleri belirli bir işlev çağırarak döndürür.

intersect

-

-

-

-

O (günlük n * m oturum)

İki adet kesişimini hesaplar.

intersectMany

-

-

-

-

O (N1 * N2...)

Bir dizi kümenin kesişimini hesaplar. Sıra boş olmamalıdır.

boş

O(1)

O(1)

O(1)

O(1)

-

İade true koleksiyonu boşsa.

isProperSubset

-

-

-

-

O (m * n günlük)

İade true tüm ilk, ikinci kümedeki öğeleridir ve en az bir öğe ikinci kümesinin ilk kümesi değil.

isProperSuperset

-

-

-

-

O (m * n günlük)

İade true tüm ikinci kümesinin ilk kümesi öğeleridir ve ilk kümesi en az bir elemanını ikinci kümesi değil.

isSubset

-

-

-

-

O (m * n günlük)

İade true ilk kümesinin tüm öğeleri ikinci kümesinde ise.

isSuperset

-

-

-

-

O (m * n günlük)

İade true , ikinci kümedeki tüm öğeleri ilk kümesi.

yinele

O(N)

O(N)

O(N)

O(N)

O(N)

Listedeki her öğeye verilen işlevi uygular.

iteri

O(N)

O(N)

O(N)

-

-

Listedeki her öğeye verilen işlevi uygular. İşleve geçirilen tamsayı dizinini gösterir.

iteri2

O(N)

O(N)

-

-

-

Belirli bir işlev çifti iki dizi dizinleri eşleşen çizilmiş öğeleri için geçerlidir. İşleve geçirilen tamsayı öğelerinin dizinini gösterir. İki dizide aynı uzunlukta olmalıdır.

iter2

O(N)

O(N)

O(N)

-

-

Belirli bir işlev çifti iki dizi dizinleri eşleşen çizilmiş öğeleri için geçerlidir. İki dizide aynı uzunlukta olmalıdır.

uzunluk

O(1)

O(N)

O(N)

-

-

Koleksiyondaki öğe sayısını döndürür.

eşleme

O(N)

O(N)

O(1)

-

-

Öğelerinin belirli bir işlev her dizi öğesine uygulanmasının sonuçları olan bir koleksiyon oluşturur.

eşleme2

O(N)

O(N)

O(1)

-

-

Öğelerinin belirli bir işlev için karşılık gelen elemanları iki koleksiyon ikili uygulanmasının sonuçları olan bir koleksiyon oluşturur. İki giriş dizileri aynı uzunlukta olmalıdır.

map3

-

O(N)

-

-

-

Belirli bir işlev aynı anda üç koleksiyonları karşılık gelen elemanları için uygulama sonuçlarını öğelerinin olan bir koleksiyon oluşturur.

mapi

O(N)

O(N)

O(N)

-

-

Öğeleri belirli bir işlev her dizi öğesine uygulanmasının sonuçları olan bir dizi oluşturur. İşleve geçirilen tamsayý dizinini dönüştürülmüş öğenin dizinini gösterir.

mapi2

O(N)

O(N)

-

-

-

Öğelerinin belirli bir işlev için karşılık gelen elemanları iki koleksiyon öğeleri dizine de geçirerek yapılandırdı uygulanmasının sonuçları olan bir koleksiyon oluşturur. İki giriş dizileri aynı uzunlukta olmalıdır.

max

O(N)

O(N)

O(N)

-

-

Koleksiyondaki kullanarak karşılaştırıldığında büyük bulunduğu öğeyi döndürür en çok işleci.

en büyük

O(N)

O(N)

O(N)

-

-

Kullanarak karşılaştırıldığında koleksiyonundaki en fazla bulunduğu öğeyi döndürür en işlevin sonuç üzerinde.

maxElement

-

-

-

-

O (log n)

Kümesi için kullanılan en yüksek sıralamaya göre belirlenen öğesinde döndürür.

en küçük

O(N)

O(N)

O(N)

-

-

Kullanarak karşılaştırıldığında koleksiyonundaki en az öğeyi döndürür min işleci.

minBy

O(N)

O(N)

O(N)

-

-

Kullanarak karşılaştırıldığında koleksiyonundaki en az öğeyi döndürür min işleci işlevin sonuç üzerinde.

minElement

-

-

-

-

O (log n)

Ayarlama için kullanılan en düşük sıralamaya göre belirlenen öğesinde döndürür.

ofArray

-

O(N)

O(1)

O(N)

O(N)

Verilen dizi olarak aynı öğeleri içeren bir koleksiyon oluşturur.

ofList

O(N)

-

O(1)

O(N)

O(N)

Verilen listesi olarak aynı öğeleri içeren bir koleksiyon oluşturur.

ofSeq

O(N)

O(N)

-

O(N)

O(N)

Verilen sıra ile aynı öğeleri içeren bir koleksiyon oluşturur.

pairwise

-

-

O(N)

-

-

Girdi dizisi ve öncülü yalnızca ikinci öğe öncül döndürülen ilk öğe hariç, her öğenin bir dizi döndürür.

partition

O(N)

O(N)

-

O(N)

O(N)

İki topluluk koleksiyonuna böler. Kendisi için verilen yüklemi döndürür öğe ilk fotoğraflardan true, ve kendileri için verilen yüklemi döndürür öğe ikinci fotoğraflardan false.

permute

O(N)

O(N)

-

-

-

Tüm öğeleri belirtilen sıralamaya göre dizilmiş bir dizi döner.

ayır

O(N)

O(N)

O(N)

O (log n)

-

Belirli bir işlev burada bazı işlev verir ilk sonucu döndürerek art arda gelen öğeleri için geçerlidir. İşlev asla bazıları ise KeyNotFoundException ortaya çıkar.

readonly

-

-

O(N)

-

-

Verilen sıra nesnesi için temsilci bir sıra oluşturur. Bu işlem türü cast edemez rediscover ve özgün sıra mutate sağlar. Örneğin, bir dizi verilen, döndürülen sıra dizinin öğeleri döndürür, ancak bir dizi dönen sırası nesnesine atanamaz.

azaltma

O(N)

O(N)

O(N)

-

-

İşlevi koleksiyonun her öğesine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. Bu işlev işlevi ilk iki öğeleri uygulayarak başlatır ve bu sonuç işlevi üçüncü öğeyi vb. yanı sıra halinde geçirir. İşlevin sonucunu verir.

reduceBack

O(N)

O(N)

-

-

-

İşlevi koleksiyonun her öğesine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. F giriş işlevidir ve öğeleri... içinde i0, bu işlev f i0 hesaplar (...(f,-1)).

remove

-

-

-

O (log n)

O (log n)

Eşlemenin etki alanından bir öğeyi kaldırır. Öğe yoksa hiçbir özel durum oluşturuldu.

replicate

-

O(N)

-

-

-

Verilen değere ayarlar her öğe ile belirli bir uzunlukta bir liste oluşturur.

rev

O(N)

O(N)

-

-

-

Öğeleri ters sırada olan yeni bir liste döner.

tarama

O(N)

O(N)

O(N)

-

-

İşlevi koleksiyonun her öğesine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular. Bu işlem işlev ikinci bağımsız değişken ve listedeki ilk öğe için geçerlidir. İşlemi daha sonra bu sonuç ikinci öğe birlikte işlevi içine vb. geçirir. Son olarak, işlem ara sonuçları ve nihai sonuç listesini döndürür.

scanBack

O(N)

O(N)

-

-

-

FoldBack işlemi benzer, ancak ara ve nihai sonuçları döndürür.

singleton

-

-

O(1)

-

O(1)

Tek bir madde üretir sırasını döndürür.

set

O(1)

-

-

-

-

Bir dizinin bir öğesi için belirtilen değere ayarlar.

atla

-

-

O(N)

-

-

Temel alınan dizinin N öğesini atlar ve kalan öğeleri oluşturan bir dizi döner.

skipWhile

-

-

O(N)

-

-

İterated zaman temel sırasını atlar öğelerinin belirli doðrulama döndürür iken, sırası döndürür true ve geri kalan öğeleri sırasının ortaya çıkarır.

sort

O(N log N) ortalama

o(n^2) en kötü durumda

O(N log N)

O(N log N)

-

-

Koleksiyon öğesi değerine göre sıralar. Öğeleri kullanılarak karşılaştırılır karşılaştırmak.

sıralama

O(N log N) ortalama

o(n^2) en kötü durumda

O(N log N)

O(N log N)

-

-

Verilen listede verilen projeksiyon sağlar tuşlarını kullanarak sıralar. Anahtarlar kullanılarak karşılaştırılır karşılaştırmak.

sortInPlace

O(N log N) ortalama

o(n^2) en kötü durumda

-

-

-

-

Bir dizinin öğeleri, bir yerde değişikliğe uğratmaya ve verilen karşılaştırma işlevini kullanarak sıralar. Öğeleri kullanılarak karşılaştırılır karşılaştırmak.

sortInPlaceBy

O(N log N) ortalama

o(n^2) en kötü durumda

-

-

-

-

Yerinde değişikliğe uğratmaya ve verilen projeksiyon tuşları kullanarak bir dizinin öğeleri sıralar. Öğeleri kullanılarak karşılaştırılır karşılaştırmak.

sortInPlaceWith

O(N log N) ortalama

o(n^2) en kötü durumda

-

-

-

-

Yerinde değişikliğe uğratmaya ve siparişi olarak verilen karşılaştırma işlevini kullanarak bir dizinin öğeleri sıralar.

sortWith

O(N log N) ortalama

o(n^2) en kötü durumda

O(N log N)

-

-

-

Siparişi olarak verilen karşılaştırma işlevini kullanarak ve yeni bir koleksiyon döndüren bir koleksiyon öğeleri sıralar.

sub

O(N)

-

-

-

-

Dizin ve uzunluk başlatarak belirtilen belirli alt aralığı içeren bir dizi oluşturur.

toplam

O(N)

O(N)

O(N)

-

-

Koleksiyondaki öðeleri toplamını verir.

toplam

O(N)

O(N)

O(N)

-

-

Her koleksiyon öğesi için işlev uygulanarak oluşturulan sonuçlar toplamını verir.

tail

-

O(1)

-

-

-

Olmadan onun ilk öğe listesini döndürür.

al

-

-

O(N)

-

-

Belirtilen sayı kadar sıra öğelerinin döndürür.

takeWhile

-

-

O(1)

-

-

İterated, temel alınan sıra sayıları öğelerinin verilen doðrulama verir iken, sırası döndürür true ve daha fazla öğe döndürüyor.

toArray

-

O(N)

O(N)

O(N)

O(N)

Verilen koleksiyonundan bir dizisini oluşturur.

liste yapma

O(N)

-

O(N)

O(N)

O(N)

Verilen koleksiyonundan bir liste oluşturur.

toSeq

O(1)

O(1)

-

O(1)

O(1)

Verilen koleksiyonundan bir sıra oluşturur.

truncate

-

-

O(1)

-

-

Bir sıra, numaralandırılmış en fazla n öğeleri döndürür döner.

bul

O(N)

O(N)

O(N)

O (log n)

-

Belirli bir yüklemi karşılayan bir öğe arar.

dizin bul

O(N)

O(N)

O(N)

-

-

Belirli bir koşul karşılar ve eşleşen öğe dizinini döndürür ilk öğe için arama veya None bu tür bir öğe varsa.

tryFindKey

-

-

-

O (log n)

-

İlk eşleme anahtar verilen yüklemi karşılayan ya da verir koleksiyonu döndüren None bu tür bir öğe varsa.

tryPick

O(N)

O(N)

O(N)

O (log n)

-

Belirli bir işlev nerede işlevini verir ilk sonucu döndürerek, art arda öğelerine uygulanan Some bazı değeri. Bu tür bir öğe olup işlemi dönüşünden None.

unfold

-

-

O(N)

-

-

Verilen hesaplaması oluşturan öğeler içeren bir sıra döndürür.

union

-

-

-

-

O (m * n günlük)

İki kümenin birleşimini hesaplar.

unionMany

-

-

-

-

O (N1 * N2...)

Bir dizi kümenin birleşimini hesaplar.

unzip

O(N)

O(N)

O(N)

-

-

Çiftler listesini iki listeye böler.

unzip3

O(N)

O(N)

O(N)

-

-

Üçlü listesini üç listeye böler.

pencereli

-

-

O(N)

-

-

Giriş sırasından alınan öğeler içeren kayan windows işlenenlerinden sırası döndürür. Her pencere yeni bir dizi olarak döndürülür.

zip

O(N)

O(N)

O(N)

-

-

Çiftleri iki koleksiyonları bir liste halinde birleştirir. İki listenin de eşit uzunlukta olması gerekir.

zip3

O(N)

O(N)

O(N)

-

-

Triples üç koleksiyonları bir liste halinde birleştirir. Listelerin eşit uzunlukta olması gerekir.

Ayrıca bkz.

Diğer Kaynaklar

F# türleri

F# dil başvurusu