Melaksanakan OrderedDictionary
Melaksanakan OrderedDictionary generik bukanlah satu tugas yang rumit, tetapi ia boleh memakan masa dan dianggap sebagai kesilapan terhadap Microsoft bahagian. Terdapat pelbagai kaedah untuk melaksanakannya, tetapi satu pendekatan melibatkan penggunaan KeyedCollection untuk storan dalaman dan Hibrid Kunci dan Senarai untuk mengisih dengan cara yang serupa dengan List.
Struktur Kelas
Antara muka untuk OrderedDictionary generik (IOrderedDictionary) termasuk antara muka generik dan bukan generik (System.Collections.Specialized.IOrderedDictionary). Kelas pelaksanaan (OrderedDictionary) mewarisi daripada kelas KeyedCollectionBase dengan medan peribadi jenis KeyedCollection2> untuk menyimpan pasangan nilai kunci secara dalaman.
Kaedah Ditindih
Kelas OrderedDictionary mengatasi pelbagai kaedah daripada kedua-dua IDictionary dan antara muka IOrderedDictionary:
- Kaedah yang berkaitan dengan pengurusan nilai kunci (Tambah, Kosongkan, ContainsKey, Alih Keluar)
- Sifat pengindeks untuk mengakses nilai melalui kunci atau indeks (ini [kunci TKey] , this[int index])
- Kaedah untuk memanipulasi susunan unsur (Insert, IndexOf, RemoveAt)
- Kaedah untuk mendapatkan semula atau menetapkan pasangan nilai kunci mengikut indeks (GetValue, SetValue, GetItem, SetItem)
- Pelaksana enumerator dan sifat untuk lelaran melalui koleksi (GetEnumerator , Kira, Kunci, Nilai)
Keupayaan Isih
Kelas OrderedDictionary termasuk kaedah untuk mengisih kunci atau nilai dalam cara yang berbeza, menggunakan pembanding terbina dalam atau tersuai:
- SortKeys(): Isih kekunci mengikut semula jadinya tertib.
- SortKeys(IComparer comparer): Isih kekunci menggunakan pembanding yang ditentukan.
- SortKeys(Comparison comparison): Isih kekunci menggunakan perwakilan perbandingan yang ditentukan.SortValues(): Isih nilai mengikut semula jadinya pesanan.
- Nilai Isih(ICComparer pembanding): Isih nilai menggunakan pembanding yang ditentukan.
- Nilai Isih(Perbandingan perbandingan): Isih nilai menggunakan perwakilan perbandingan yang ditentukan.
-
Ciri Tambahan
Kelas OrderedDictionary juga menyokong ciri sedemikian sebagai:
Akses kepada KeyedCollection dalaman melalui sifat _keyedCollection.- Isih algoritma yang diwarisi daripada kelas KeyedCollection2 (SortByKeys, Sort, SortByKeys).
- Helper untuk mencipta DictionaryEnumerators untuk digunakan dengan IOderedDictionary.
-
Contoh Penggunaan
Contoh kod yang disediakan menunjukkan cara membuat, memanipulasi dan mengisih contoh OrderedDictionary:
- Mencipta OrderedDictionary dengan pasangan nilai kunci.
- Mengambil dan menetapkan nilai menggunakan pengindeks dan kaedah GetValue/SetValue.
- Menggunakan kaedah Kaedah SortKeys dan SortValues untuk mengisih kamus mengikut kekunci atau nilai.
- Menghitung melalui koleksi untuk mengakses setiap pasangan nilai kunci.
Kesimpulan
Walaupun .NET tidak menyediakan pelaksanaan generik OrderedDictionary secara asli, sampel kod yang disediakan menawarkan alternatif yang mantap yang boleh disesuaikan dengan keperluan khusus. Pelaksanaan ini mengisi jurang dalam perpustakaan koleksi .NET, membolehkan pengurusan data yang cekap dan teratur dengan kedua-dua akses berasaskan kunci dan berasaskan indeks.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Generic OrderedDictionary dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!