首页 > 解决方案 > 是否使用 compareTo

问题描述

我必须比较自定义类的对象,比如 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 与我们在第二种方法中所做的相同。

标签: javacomparator

解决方案


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

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

Comparator.comparingInt(A::getMem)

推荐阅读