3

我有一个有两个整数成员的类。这些成员是块和偏移量。我需要比较这个类的两个实例与大或小符号。例如;

instance1 < instance2

语句需要返回 true if

instance1.blockNumber < instance2.blockNumber;

或者

instance1.blockNumber = instance2.blockNumber;
instance1.offset < instance2.offset;

据我所知,Java 不支持运算符重载。我怎么能做这样的比较?

4

3 回答 3

6

让类实现Comparable提供compareTo方法的接口。然后,您可以在 if 语句中使用数字的值(-1for less、1for more、0for equals)。

如果您想将这些对象放入列表中(例如,用于排序),您也应该@Override使用该.equals方法。

import java.util.Comparable;

public class BlockOffset implements Comparable<BlockOffset>
{
  private int blockNumber;
  private int offset;

  @Override
  public int compareTo(BlockOffset instance2) {
    if (this.blockNumber < instance2.blockNumber) return -1;
    if (this.blockNumber > instance2.blockNumber) return 1;
    if (this.offset < instance2.offset) return -1;
    if (this.offset > instance2.offset) return 1;

    return 0;
  }   
}
于 2013-04-10T11:46:41.933 回答
5

如果类类型是您自己的代码,那么您可以让它实现Comparable并定义compareTo您可以编写逻辑的方法。然后,您可以使用compareTo.

于 2013-04-10T11:46:38.403 回答
0

您可以实施和使用comparablecomparator

于 2013-04-10T11:47:41.720 回答