Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么排序列表必须有一个键值对?_.net_Generics_Collections - Fatal编程技术网

.net 为什么排序列表必须有一个键值对?

.net 为什么排序列表必须有一个键值对?,.net,generics,collections,.net,Generics,Collections,如果我只想要一个只包含日期、整数或双精度的排序列表,那么真的有必要定义一个排序列表(整数、整数) 对我来说似乎很有趣,但可能只是琐碎。我更喜欢使用(整数的)分类列表 (这个问题与.Net通用集合有关)您可以使用常规的列表并在其上调用排序。我认为哈希集可能适合您的需要。排序列表按键排序,而不是按值排序。从 SortedList对象的元素 也可以按键进行排序 根据一位特定的IComparer 当 SortedList已创建或根据 可比实现 由钥匙自己提供。在里面 无论哪种情况,分类列表都不会 允许重

如果我只想要一个只包含日期、整数或双精度的排序列表,那么真的有必要定义一个排序列表(整数、整数)

对我来说似乎很有趣,但可能只是琐碎。我更喜欢使用(整数的)分类列表


(这个问题与.Net通用集合有关)

您可以使用常规的
列表
并在其上调用
排序

我认为
哈希集
可能适合您的需要。

排序列表按键排序,而不是按值排序。从

SortedList对象的元素 也可以按键进行排序 根据一位特定的IComparer 当 SortedList已创建或根据 可比实现 由钥匙自己提供。在里面 无论哪种情况,分类列表都不会 允许重复密钥


所以它基本上是一个支持排序的字典类<代码>列表另一方面,对值进行排序

下一版本的.NET(4.0)将具有完全满足您需要的类。在此之前,封装
SortedList
是最接近的——除非您想要实现自己的类来实现这一点,或者使用外部集合库(例如,它有
SortedArray
TreeSet
类)。

是的,这是必要的,因为API就是这样设计的。:-)

但是,制作自己的使用
SortedList
SortedList
并不难。5行代码

class SortedList<T> : IEnumerable<T> {
    SortedList<T,int> _list = new SortedList<T,int>();
    public IEnumerator<T> GetEnumerator() { return _list.Keys.GetEnumerator(); }
    IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator();  }
    public void Add(T v) { _list.Add(v, 1); }
    public int Count { get { return _list.Count; } }
}
分类列表:IEnumerable{
SortedList_list=新的SortedList();
公共IEnumerator GetEnumerator(){return _list.Keys.GetEnumerator();}
IEnumerator IEnumerable.GetEnumerator(){返回此.GetEnumerator();}
公共无效添加(tv){u list.Add(v,1);}
公共整数计数{get{return{u list.Count;}}
}

唯一的问题是,
SortedList
无法处理DUP。

SortedSet不会按照集合论的要求添加与集合中已存在元素相等的元素。SortedList应该能够处理相同值的多个实例并正确排序。只需要实现非泛型ienumerable。看见我已经为您编辑了它。如果频繁排序,对于大型列表来说,这可能是低效的;此外,每次更改时,您必须记住对其进行排序。可能重复的