C#中是否存在非唯一键排序列表泛型集合?

kdt*_*kdt 21 c# collections sortedlist

我对System.Collections.Generic.SortedList感到有些惊讶

  1. 它需要我<key, value>而不是<value>(比较)
  2. 它只允许按值输入

这些在我想要使用它的方式上显得古怪(虽然我确信它们适合其他情况).还有另一个没有这两个特征的集合吗?

Mar*_*ell 7

SortedList<,>实际上是按键排序的地图,而不是列表.可能是命名错误.但是有一些方法可以模仿你想要的东西,具体取决于你的具体要求.例如,您可以封装a SortedList<T, int>并添加/删除以下内容:

// add
int count;
if(list.TryGetValue(value, out count)) list[value] = count+1;
else list[value] = 1;
Run Code Online (Sandbox Code Playgroud)

最终你也可以使用一个简单的列表(List<>) - 这取决于你在做什么.

在某种程度上,我希望数据绑定等使得很难实现立即排序的常规列表 - 您需要实现许多接口才能使其正常工作,因为通常它会期望您添加的项目保持在最后.