A arayüzü HashSet<T>
uygular ICollection<T>
:
public interface ICollection<T> : IEnumerable<T>, IEnumerable
{
// Methods
void Add(T item);
void Clear();
bool Contains(T item);
void CopyTo(T[] array, int arrayIndex);
bool Remove(T item);
// Properties
int Count { get; }
bool IsReadOnly { get; }
}
Bir List<T>
takma IList<T>
uzanır,ICollection<T>
public interface IList<T> : ICollection<T>
{
// Methods
int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
// Properties
T this[int index] { get; set; }
}
Bir HashSet, dahili olarak bir hashtable aracılığıyla uygulanan anlamsallık ayarlamıştır:
Küme, yinelenen öğeler içermeyen ve öğeleri belirli bir sırada olmayan bir koleksiyondur.
HashSet indeks / konum / liste davranışını kaybederse ne kazanır?
HashSet'ten öğe eklemek ve almak her zaman nesnenin kendisi tarafından yapılır, bir indeksleyici aracılığıyla değil ve bir O (1) işlemine yakındır (Liste, O (1) add, O (1) indekse göre geri getir, O (n) bul /Kaldırmak).
Bir HashSet'in davranışı, a'yı Dictionary<TKey,TValue>
yalnızca değerler olarak anahtarlar ekleyerek / kaldırarak ve sözlük değerlerini göz ardı ederek karşılaştırılabilir. Bir sözlükteki anahtarların yinelenen değerlere sahip olmamasını beklersiniz ve bu, "Ayar" kısmının amacıdır.
SortedSet
veri yapısı sağlaması, siparişin bir kümenin özelliği olmadığı konusunda söylediklerinizle çelişir veya geliştirme ekibinin yanlış anlamasına işaret eder.