如何使用 compareTo() 来比较两个对象?

How to use compareTo() to compare two objects?

我是 java 的新手,我正在尝试比较 class K 的两个对象。我不知道如何定义 K 3 更小比 K 7 因为两者都不是整数而是 K 类型。您能否展示如何比较猫和狗,以便 cat < dog。因此,cat.compareTo(dog) == -1.

这是我的两个对象:

K cat = new K(3);

K dog = new K(7);

我在 class 中扩展了 Comparable 以进行比较。我想比较它们,所以这就是我所做的:


public class K extends Comparable<K>{

//CONSTRUCTOR

//METHOD

if (cat.compareTo(dog) == 0){

   System.out.println("Hi");

}else if ((cat.compareTo(dog) == -1){

   System.out.println("Bye");

}else if ((cat.compareTo(dog) == 1){

   System.out.println("Sleep");
}
}

在您的 class 中,您必须重写 Comparable 接口的 compareTo 方法。顺便说一句,使用 implements 而不是 extends 因为 Comparable 不是 class 而是一个接口。

您的 class 需要实现 Comparable 接口,并且在您的 class 内部您需要覆盖 compareTo 方法(在 Comparable 接口中)。在此方法中,您将定义如何将您的对象与另一个对象进行比较,以及 'criteria' 进行比较的对象。

实现 compareTo 方法是一个很好的做法,当它的 return 值为 0 时,就像两个对象相等(例如 firstK.compareTo(secondK) == firstK.equals(secondK))。

您还可以阅读 Java 文档 compareTo documentation

public class K implements Comparable<K> {
     //Attributes, constructor etc
     @Override
     public int compareTo(final K otherK) {
          /*
          Do what you want to compare them, for example, if your
          K class has a integer field 'value', and you want to compare 
          K's instances based on 'value' field, you can do as follow:
          */
          return Integer.compare(this.value, otherK.getValue());
     }
}