2010-03-06 21 views
44

Bunu ifade etmenin başka bir yolu, "C# 'de List<> gibi bir sınıf var mı, ama belirli bir değerin olup olmadığını kontrol etmek için optimize edilmiş" olacak mı? Eminim küçük bir değerler List<>.Contains muhtemelen iyi olur, ama ya binlerce veya milyonlarca değere sahip olsam ve içinde belirli bir değerin olup olmadığını öğrenmek istersek?C# 'daki Sözlük <> gibi bir sınıf var mı, sadece anahtarlar için, değerler yok mu?

Bu tür bir şeyi geçmişte bir Dictionary<object, int> oluşturarak ve her anahtar için 0 değerini ayarlayarak uygulamıştım, ancak bu gerçekten rahatsız edici hissettiriyor. Ve şimdi, benim aptal sorununun binlerce (düzinelerce, hatta) için eğitime dönüştürülebileceği Yığın Taşması var. İşte burada! Ben, belki Set dışında, böyle bir sınıf olarak adlandırılacak bile emin değilim

çok açıktır ki zorlu ... olmuştur konuda arar :)

+0

[C# Veri Yapısı Sözlük'ten Ama Avantajsız] olası bir kopyası (http://stackoverflow.com/questions/1363773/c-sharp-data-structure-like-dictionary-but-without-a-value) – slolife

cevap

56

HashSet<T> sınıfını kullanmayı deneyin.

Düzenleme: Bir blog okurken bu sınıfa gelene kadar uzunca bir zaman geçirdim.

+0

+1, kuşkusuz ben de aynısını yaptım .. :) –

+2

Ayrıca, .NET 4'te, bu sınıf, aynı zamanda yeni kuzeni olan "SortedSet " ile birlikte yeni 'ISet ' arabirimini de uygular. ancak sipariş semantiği ile. –

+2

.NET 1.0 ve 2.0'ın karanlık günlerinde, temel olarak HashSet gibi çalışmış ancak altında bir sözlük kullandık. – jjxtra

İlgili konular