6

我的类的CompareTo()方法是动态的,范围可以从简单的比较到多列的比较。这一切都是在运行时确定的,而且效果很好。

但在某些情况下,我希望尝试使用默认比较对我的对象集合进行排序,而不是什么都不做。

CompareTo()我惊讶的是,任何比较都返回 0 是行不通的。该列表以某种奇怪的、看似随机的顺序重新排列。

有没有办法在CompareTo()方法实现中做到这一点?我宁愿不通过重写 Sort() 在集合级别处理这个问题。

4

3 回答 3

1

那是因为 QuickSort 不是一个稳定的排序。除非您能以某种方式获取元素的索引,否则我看不到在 CompareTo 方法中解决此问题的好选择。

于 2010-03-09T23:45:25.030 回答
0

我还没有证明这一点,但作为一个建议,如果您尝试始终返回 1 或始终返回 -1 会怎样?

于 2010-03-09T23:30:05.353 回答
0

你必须覆盖Sort(). 的默认实现Sort()不保证它将如何CompareTo()用于到达排序集合,因此没有任何方法可以使用它Sort()来做正确的事情。

于 2010-03-09T23:31:43.703 回答