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

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

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

(A a1, A a2) -> {return (Integer)a1.getMem().compareTo(a2.getMem());}


或者,我可以自己进行比较:

(A a1, A a2) -> {
     if(a1.getMem() > a2.getMem()){
         return 1;
     }else{
        if(a1.getMem() < a2.getMem()) {
            return -1;
         }else{
             return 0
          }
     }
}


哪种方法更好?

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

最佳答案

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

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

Comparator.comparingInt(A::getMem)

关于java - 是否使用compareTo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56096845/

10-10 10:03