2013-06-21 171 views
-1

對不起,我是一個真正的Java初學者,所以這個問題可能已經有了答案,但我無法找到它。 我想要做的事等同於(我已經知道你不能真正超負荷運營商):Java,比較對象

bool operator < (MyClass a, MyClass b) {/*code*/} 

什麼是所需的語法,這樣做,和我在哪裏定義這個操作?

回答

1

如果你想檢查平等,那麼你需要覆蓋和hashCode()MyClass。那麼你可以檢查a.equals(b)

如果你想比較它們,那麼你可以在MyClass中實現Comparable

如果你想根據不同的領域進行比較,然後寫一個Comparator

0

java不支持運算符重載像你想要的。您可以創建一個方法來比較對象的特定值。

4

MyClass實施Comparable

class MyClass implements Comparable<MyClass> { 
    public int compareTo(MyClass other) { 
    // returns a negative number if this < other, 0 if this == other, 
    // a positive number if this > other 
    } 
} 

,然後說a < b,寫a.compareTo(b) < 0

另外,徵收 「外部排序,」 寫一個Comparator

Comparator<MyClass> comparator = new Comparator<MyClass>() { 
    public int compare(MyClass a, MyClass b) { 
    // same rules 
    } 
}; 

,然後做comparator.compare(a, b) < 0

0

在Java中有這樣的兩個接口:ComparableComparator

Comparable用於比較this與另一個對象,而Comparator用於比較兩個其他對象。

0

您將不得不實施方法進行比較。這應該通過執行Comparable來完成。

public class MyClass implements Comparable 
{ 
    public int compareTo(Object o) 
    { 
     // Compare code 
    } 
} 

此方法必須返回0,如果對象是相同的(例如,「myString的」和「myString的)中,如果該對象是小於我們比較它與(例如一個負數,「aaa」和「bbb」),如果該對象大於我們正在比較的對象(例如,「ccc」和「bbb」),則爲正數

請注意,無論如何,也不應該預料到,負數和負數將是一個或負數,它必須是負數或正數,例如,我們可以返回一個偏移量,這會更具體地告訴我們如何比較兩個物體。