-1

抱歉,我是真正的 Java 初学者,所以这个问题可能已经有了答案,但我找不到。我想做一些等效的事情(我已经知道你实际上不能重载运算符):

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

这样做需要什么语法,我在哪里定义这个操作?

4

5 回答 5

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

于 2013-06-21T17:59:30.773 回答
1

如果要检查是否相等,则需要覆盖equals()and hashCode()in MyClass。然后你可以检查为a.equals(b)

如果你想比较它们,那么你可以ComparableMyClass.

如果要根据不同的字段进行比较,请编写Comparator.

于 2013-06-21T17:57:13.827 回答
0

你将不得不实现方法来比较。这应该通过实施来完成Comparable

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

如果对象相同(例如,“myString”和“myString”),此方法必须返回 0,如果该对象小于我们要与之比较的对象(例如,“aaa”和“bbb”,则返回负数"),如果该对象大于我们要与之比较的对象,则为正数(例如,“ccc”和“bbb”)。

请注意,负数和正数不一定是或不应该是一或负数。它必须是消极的或积极的。例如,我们可以返回一个偏移量,它可以更具体地告诉我们两个对象如何比较。

于 2013-06-21T18:02:55.443 回答
0

java 不支持您想要的运算符重载。您可以创建一个方法来比较对象的特定值。

于 2013-06-21T17:59:04.583 回答
0

Java 中有两个这样的接口:ComparableComparator

Comparable用于this与另一个对象进行比较,而Comparator用于比较其他两个对象。

于 2013-06-21T17:59:48.457 回答