我们有一个

SortedList<Resource, Resource> resources =
    new SortedList<Resource, Resource>(new ResourceIdle());

我们在模拟中使用的。通过这种方式初始化此资源列表,因为我们希望在任何时间点传递不同的比较器。我们遇到的第一个问题是SortedList<>需要在比较器中进行额外的比较,以便我们可以添加具有相同属性的Resource的不同实例。例如,如果比较器看起来像:
public int Compare(Resource x, Resource y)
{
    int priority1 = x.Priority;
    int priority2 = y.Priority;

    if (priority1 > priority2) {
      return -1;
    } else if (priority1 < priority2) {
      return 1;
    } else {
      return (x.Id.CompareTo(y.Id));
    }
}

那么当优先级相同时,我们必须进行额外的比较,否则,对于具有相同键的条目,我们将获得一个异常(exception)。所以我的问题是,还有另一种方法可以实现这一目标吗?作为第二个问题,是否有比SortedList<>更快的命令来订购大量对象的?

最佳答案

好吧,SortedDictionary<,>具有不同的性能特征-它取决于您正在使用它。 MSDN比较这两者有很多细节:

关于C#比SortedList <>更快的排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3816183/

10-13 06:38