SortedList的高难度问题!

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:03:09
程序如下:
SortedList SL = new SortedList();
SL.Add("a1", "b1");
SL.Add("a2", "b2");
SL.Add("a1", "b3");

取值时:

SL.getkey(0).tostring,SL.getkey(1).tostring,SL.getkey(2).tostring分别为: a1,a1,a2
我希望取到结果是:
SL.getkey(0).tostring,SL.getkey(1).tostring,SL.getkey(2).tostring分别为: a1,a2,a1

也就是说我不想让SL自己排序,而是按我ADD的顺序输出,如何设计呢?

SortedList 是 Hashtable 和 Array 的混合。当使用 Item 索引器属性按照元素的键访问元素时,其行为类似于 Hashtable。当使用 GetByIndex 或 SetByIndex 按照元素的索引访问元素时,其行为类似于 Array。

SortedList 在内部维护两个数组以将数组存储到列表中;即,一个数组用于键,另一个数组用于相关联的值。每个元素都是一个可作为 DictionaryEntry 对象进行访问的键/值对。键不能为空引用(Visual Basic 中为 Nothing),但值可以。

SortedList 的容量是列表可拥有的元素数。随着向 SortedList 中添加元素,容量通过重新分配按需自动增加。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。

SortedList 的元素将按照特定的 IComparer 实现(在创建 SortedList 时指定)或按照键本身提供的 IComparable 实现并依据键来进行排序。不论在哪种情况下,SortedList 都不允许重复键。

索引顺序基于排序顺序。当添加元素时,元素将按正确的排序顺序插入 SortedList,同时索引会相应地进行调整。若移除了元素,索引也会相应地进行调整。因此,当在 SortedList 中添加或移除元素时,特定键/值对的索引可能会更改。

由于要进行排序,所以在 SortedList 上操作比在 Hashtable 上操作要慢。但是,SortedList 允许通过相关联键或通过索引对值进行访问,可提供更大的灵活性。

此集合中的索引从零开始。

可以试试这两个:
SortedList表示键/值对的集合,这些键和值按键排序并可按照键和索引访问。
SortedList的key是不能重复的,也就是不能有两个a1,换成如下就可以了

SortedListSL = new SortedList();
SL.Add("a1", "b1");
SL.Add("a2&quo