抱歉,我是真正的 Java 初学者,所以这个问题可能已经有了答案,但我找不到。我想做一些等效的事情(我已经知道你实际上不能重载运算符):
bool operator < (MyClass a, MyClass b) {/*code*/}
这样做需要什么语法,我在哪里定义这个操作?
抱歉,我是真正的 Java 初学者,所以这个问题可能已经有了答案,但我找不到。我想做一些等效的事情(我已经知道你实际上不能重载运算符):
bool operator < (MyClass a, MyClass b) {/*code*/}
这样做需要什么语法,我在哪里定义这个操作?
有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
。
如果要检查是否相等,则需要覆盖equals()
and hashCode()
in MyClass
。然后你可以检查为a.equals(b)
。
如果你想比较它们,那么你可以Comparable
在MyClass
.
如果要根据不同的字段进行比较,请编写Comparator
.
你将不得不实现方法来比较。这应该通过实施来完成Comparable
。
public class MyClass implements Comparable
{
public int compareTo(Object o)
{
// Compare code
}
}
如果对象相同(例如,“myString”和“myString”),此方法必须返回 0,如果该对象小于我们要与之比较的对象(例如,“aaa”和“bbb”,则返回负数"),如果该对象大于我们要与之比较的对象,则为正数(例如,“ccc”和“bbb”)。
请注意,负数和正数不一定是或不应该是一或负数。它必须是消极的或积极的。例如,我们可以返回一个偏移量,它可以更具体地告诉我们两个对象如何比较。
java 不支持您想要的运算符重载。您可以创建一个方法来比较对象的特定值。
Java 中有两个这样的接口:Comparable和Comparator。
Comparable
用于this
与另一个对象进行比较,而Comparator
用于比较其他两个对象。