對不起,我是一個真正的Java初學者,所以這個問題可能已經有了答案,但我無法找到它。 我想要做的事等同於(我已經知道你不能真正超負荷運營商):Java,比較對象
bool operator < (MyClass a, MyClass b) {/*code*/}
什麼是所需的語法,這樣做,和我在哪裏定義這個操作?
對不起,我是一個真正的Java初學者,所以這個問題可能已經有了答案,但我無法找到它。 我想要做的事等同於(我已經知道你不能真正超負荷運營商):Java,比較對象
bool operator < (MyClass a, MyClass b) {/*code*/}
什麼是所需的語法,這樣做,和我在哪裏定義這個操作?
如果你想檢查平等,那麼你需要覆蓋和hashCode()
MyClass
。那麼你可以檢查a.equals(b)
。
如果你想比較它們,那麼你可以在MyClass
中實現Comparable
。
如果你想根據不同的領域進行比較,然後寫一個Comparator
。
java不支持運算符重載像你想要的。您可以創建一個方法來比較對象的特定值。
有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
。
在Java中有這樣的兩個接口:Comparable和Comparator。
Comparable
用於比較this
與另一個對象,而Comparator
用於比較兩個其他對象。
您將不得不實施方法進行比較。這應該通過執行Comparable
來完成。
public class MyClass implements Comparable
{
public int compareTo(Object o)
{
// Compare code
}
}
此方法必須返回0,如果對象是相同的(例如,「myString的」和「myString的)中,如果該對象是小於我們比較它與(例如一個負數,「aaa」和「bbb」),如果該對象大於我們正在比較的對象(例如,「ccc」和「bbb」),則爲正數
請注意,無論如何,也不應該預料到,負數和負數將是一個或負數,它必須是負數或正數,例如,我們可以返回一個偏移量,這會更具體地告訴我們如何比較兩個物體。