1. 程式人生 > >C#中SortedList 和 SortedDictionary集合型別

C#中SortedList 和 SortedDictionary集合型別

a:  System.Collections.Generic的SortedList

b.: System.Collections.Generic的SortedDictionary

1.a與b的作用:

           能夠儲存資料並自動按照key進行排序。

2.定義與使用:

           SortedDictionary<key,value>

           SortedList<key,value>

           其中key與排序有關,value為值且可以為值或引用型別。

            // SortedDictionary

            SortedDictionary<int, string> sDictionary = new SortedDictionary<int, string>();
            sDictionary.Add(3, "cc");
            sDictionary.Add(4, "dd");
            sDictionary.Add(1, "aa");
            sDictionary.Add(2, "bb");            // 此處可以發現sDictionary已經自動按key進行了排序

            //  得到SortedDictionary的所有key的集合

            SortedDictionary<int, string>.KeyCollection keys = sDictionary.Keys;

            //  得到SortedDictionary的所有value的集合
            SortedDictionary<int, string>.ValueCollection values = sDictionary.Values; 

            //SortedList

            SortedList<int, string> sList = new SortedList<int, string>();
            sList.Add(3, "cc");
            sList.Add(4, "dd");
            sList.Add(1, "aa");
            sList.Add(2, "bb");                       // 此處可以發現sList已經自動按key進行了排序

            //  得到SortedList的所有key的集合

            IList<int> keysList = sList.Keys;

           //  得到SortedList的所有value的集合
            IList<string> valuesList = sList.Values;

3.二者區別

SortedList 泛型類是具有 O(log n) 檢索的二進位制搜尋樹,其中 n 是字典中元素的數目。就這一點而言,它與 SortedDictionary 泛型類相似。這兩個類具有相似的物件模型,並且都具有 O(log n

) 的檢索運算複雜度。這兩個類的區別在於記憶體的使用以及插入和移除元素的速度:

  • SortedList 使用的記憶體比 SortedDictionary 少。

  • SortedDictionary 可對未排序的資料執行更快的插入和移除操作,它的運算複雜度為 O(log n),而 SortedList 的運算複雜度為 O(n)。

  • 如果使用排序資料一次性填充列表,則 SortedList 比 SortedDictionary 快。

4.與List相比的優勢是能夠自動排序

   List的排序請看另一篇文章。