我簡單的例子(編譯後的工作代碼)只是不會根據它們的權重對水果進行排序。爲什麼我的對象沒有實現Comparable排序?
import java.util.Arrays;
public class Test {
public static class Fruit implements Comparable<Fruit> {
public int weight = 0;
public Fruit(int w) { weight = w; }
// compare this fruit to a given fruit f
public int compareTo(Fruit f) {
return (weight > f.weight) ? 1 : 0;
}
}
public static void main(String[] args) {
// get some fruits (we intentionally create a box for 100 fruits)
Fruit[] fruits = new Fruit[100];
for (int i = 0; i < 10; i++) {
fruits[i] = new Fruit((int)(Math.random() * 50 + 1));
}
// sort fruits by weight
Arrays.sort(fruits, 0, 10);
// print fruit weights
for (int i = 0; i < 10; i++) {
System.out.print(fruits[i].weight + " ");
}
}
}
爲什麼是這樣?
好吧,在我的問題(不是關於水果)中,我有永遠不會成對平等的物體,這就是爲什麼我認爲一個物體比另一個物體大或小的原因。那麼當我知道0(對象相等)永遠不會發生時,我該如何處理這種情況呢?
如果您正確實現了compareTo操作(請參閱下面的答案),並且根據定義,兩個值永遠不會相等,compareTo將永遠不會返回0 - 無需專門處理不會發生的事情。如果 - 由於某些原因 - 它會在一段時間後發生,你的假設是錯誤的,但是實現仍然是正確的(如果compareTo則返回0)。沒有傷害,對吧? –