我班级的CompareTo()
方法是动态的,范围从简单的比较到多个列的比较。这一切都是在运行时确定的,效果很好。
但在某些情况下,我希望任何尝试使用默认比较对我的对象集合进行排序,而不做任何事情。
让CompareTo()
只返回0进行任何比较,令我惊讶的是,它不起作用。该列表以一些奇怪的,看似随机的顺序重新排列。
有没有办法在CompareTo()
方法实现中执行此操作?我不想通过重写Sort()来处理这个问题。
答案 0 :(得分:1)
那是因为QuickSort不是stable sort。我没有看到在CompareTo方法中修复此问题的好选项,除非您能以某种方式获取元素的索引。
答案 1 :(得分:0)
我没有证明这一点,但作为一个建议,如果你试图总是返回1,或者总是-1?
答案 2 :(得分:0)
您必须覆盖Sort()
。 Sort()
的默认实现不保证它将如何使用CompareTo()
来获取已排序的集合,因此没有任何方法可以使用它来使Sort()
做正确的事情