我的类的CompareTo()
方法是动态的,范围可以从简单的比较到多列的比较。这一切都是在运行时确定的,而且效果很好。
但在某些情况下,我希望尝试使用默认比较对我的对象集合进行排序,而不是什么都不做。
令CompareTo()
我惊讶的是,任何比较都返回 0 是行不通的。该列表以某种奇怪的、看似随机的顺序重新排列。
有没有办法在CompareTo()
方法实现中做到这一点?我宁愿不通过重写 Sort() 在集合级别处理这个问题。
我的类的CompareTo()
方法是动态的,范围可以从简单的比较到多列的比较。这一切都是在运行时确定的,而且效果很好。
但在某些情况下,我希望尝试使用默认比较对我的对象集合进行排序,而不是什么都不做。
令CompareTo()
我惊讶的是,任何比较都返回 0 是行不通的。该列表以某种奇怪的、看似随机的顺序重新排列。
有没有办法在CompareTo()
方法实现中做到这一点?我宁愿不通过重写 Sort() 在集合级别处理这个问题。
那是因为 QuickSort 不是一个稳定的排序。除非您能以某种方式获取元素的索引,否则我看不到在 CompareTo 方法中解决此问题的好选择。
我还没有证明这一点,但作为一个建议,如果您尝试始终返回 1 或始终返回 -1 会怎样?
你必须覆盖Sort()
. 的默认实现Sort()
不保证它将如何CompareTo()
用于到达排序集合,因此没有任何方法可以使用它Sort()
来做正确的事情。