SortedList<T,K>,SortedDictionary<T,K>,Dictionay<T,K>用法区别
这三货都是键值对,都可以通过Key获取Value。
Dictionay<T,K> | SortedDictionary<T,K> | SortedList<T,K> | |
支持通过Index获取元素? | 否 | 否 | 是 |
遍历时的排序方式 | 随机,与hash算法有关 |
默认用Key的值排序,而非插入顺序。可通过构造器传入自定义的排序方法。 每次插入新值都会与现有项比较,可能导致列表重置。 |
|
可查找索引 | 否 | 否 | 是 |
内存使用 | 多 | 少 | |
插入、移除性能 | 慢 | 快 |
抛开性能和内部实现,SortedDictionary<T,K>、 SortedList<T,K>这俩货用法基本相同,区别就是后者可以有索引操作而前者没有。
二者默认都是按Key的默认方式排序,支持自定义。比如,如果想按照自己的方式来排序,可以这样:
class MyCompare : IComparer<string> { public int Compare(string x, string y) { return -1 * StringComparer.OrdinalIgnoreCase.Compare(x, y); } } var a = new SortedList<String, string>(new MyCompare());