Jenis Koleksi Terurut
Kelas System.Collections.SortedList, System.Collections.Generic.SortedList<TKey,TValue> kelas generik, dan System.Collections.Generic.SortedDictionary<TKey,TValue> kelas generik mirip Hashtable dengan kelas dan Dictionary<TKey,TValue> kelas generik tempat mereka mengimplementasikan IDictionary antarmuka, tetapi mereka mempertahankan elemen mereka dalam urutan berdasarkan kunci, dan mereka tidak memiliki karakteristik penyisipan dan pengambilan hash O(1). Ketiga kelas memiliki beberapa fitur yang sama:
Ketiga kelas mengimplementasikan System.Collections.IDictionary antarmuka. Dua kelas generik juga mengimplementasikan System.Collections.Generic.IDictionary<TKey,TValue> antarmuka generik.
Setiap elemen merupakan pasangan kunci/nilai untuk tujuan pencacahan.
Catatan
Kelas nongenerik SortedList mengembalikan DictionaryEntry objek saat dijumlahkan, meskipun dua jenis generik mengembalikan KeyValuePair<TKey,TValue> objek.
Elemen diurutkan sesuai dengan System.Collections.IComparer implementasi (untuk nongenerik SortedList) atau System.Collections.Generic.IComparer<T> implementasi (untuk dua kelas generik).
Setiap kelas menyediakan properti yang mengembalikan koleksi yang hanya berisi kunci atau hanya nilai.
Tabel berikut mencantumkan beberapa perbedaan antara dua kelas daftar yang diurutkan dan SortedDictionary<TKey,TValue> kelas.
SortedList kelas nongenerik dan SortedList<TKey,TValue> kelas generik | SortedDictionary<TKey,TValue> kelas generik |
---|---|
Properti yang mengembalikan kunci dan nilai diindeks, memungkinkan pengambilan terindeks yang efisien. | Tidak ada pengambilan terindeks. |
Pengambilan adalah O(log n ). |
Pengambilan adalah O(log n ). |
Penyisipan dan penghapusan umumnya O(n ); namun, penyisipan adalah O(log n ) untuk data yang sudah dalam urutan pengurutan, sehingga setiap elemen ditambahkan ke akhir daftar. (Ini mengasumsikan bahwa pengubahan ukuran tidak diperlukan.) |
Penyisipan dan penghapusan adalah O(log n ). |
Menggunakan lebih sedikit memori daripada SortedDictionary<TKey,TValue>. | Menggunakan lebih banyak memori daripada SortedList kelas nongenerik dan SortedList<TKey,TValue> kelas generik. |
Untuk daftar atau kamus yang diurutkan yang harus dapat diakses secara bersamaan dari beberapa utas, Anda dapat menambahkan logika pengurutan ke kelas yang berasal dari ConcurrentDictionary<TKey,TValue>. Saat mempertimbangkan kekekalan, jenis kekekalan yang sesuai berikut mengikuti semantik pengurutan yang sama: ImmutableSortedSet<T> dan ImmutableSortedDictionary<TKey,TValue>.
Catatan
Untuk nilai yang berisi kunci mereka sendiri (misalnya, catatan karyawan yang berisi nomor ID karyawan), Anda dapat membuat koleksi kunci yang memiliki beberapa karakteristik daftar dan beberapa karakteristik kamus dengan berasal dari KeyedCollection<TKey,TItem> kelas generik.
Dimulai dengan .NET Framework 4, SortedSet<T> kelas menyediakan pohon penyeimbangan mandiri yang mempertahankan data dalam urutan yang diurutkan setelah penyisipan, penghapusan, dan pencarian. Kelas ini dan HashSet<T> kelas mengimplementasikan ISet<T> antarmuka.