是否使用compareTo

Man*_*oid 2 java comparator

我必须比较一个自定义类的对象,比如说A。

比较是基于A的int成员(例如mem)进行的简单比较。

因此,在比较器实现中,我可以执行以下操作:

(A a1, A a2) -> {return (Integer)a1.getMem().compareTo(a2.getMem());}
Run Code Online (Sandbox Code Playgroud)

或者,我可以自己比较:

(A a1, A a2) -> {
     if(a1.getMem() > a2.getMem()){
         return 1;
     }else{
        if(a1.getMem() < a2.getMem()) {
            return -1;
         }else{
             return 0
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

哪种方法更好?

第一种方法的代码行少得多,但是内部compareTo所做的与第二种方法相同。

Era*_*ran 8

通常最好不要重新发明轮子。因此,第一种方法更好。

您甚至可以使用以下代码编写更少的代码Comparator.comparingInt

Comparator.comparingInt(A::getMem)
Run Code Online (Sandbox Code Playgroud)