A HashSet<T>
mengimplementasikan ICollection<T>
antarmuka:
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; }
}
Sebuah List<T>
implementasi IList<T>
, yang memperluasICollection<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; }
}
HashSet telah menetapkan semantik, diimplementasikan melalui hashtable secara internal:
Set adalah kumpulan yang tidak mengandung elemen duplikat, dan yang elemennya tidak ada dalam urutan tertentu.
Apa yang didapat HashSet, jika kehilangan perilaku indeks / posisi / daftar?
Menambahkan dan mengambil item dari HashSet selalu oleh objek itu sendiri, bukan melalui pengindeks, dan dekat dengan operasi O (1) (Daftar adalah O (1) tambahkan, O (1) ambil dengan indeks, O (n) cari /menghapus).
Perilaku HashSet dapat dibandingkan dengan menggunakan Dictionary<TKey,TValue>
hanya dengan menambahkan / menghapus kunci sebagai nilai, dan mengabaikan nilai kamus itu sendiri. Anda akan berharap kunci dalam kamus tidak memiliki nilai duplikat, dan itulah inti dari bagian "Set".
SortedSet
struktur data baik yang bertentangan dengan apa yang Anda katakan tentang pesanan tidak menjadi properti dari set - atau menunjukkan kesalahpahaman dari tim pengembangan.