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