java - 是否使用compareTo

标签 java comparator

我必须比较自定义类的对象,比如 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/

相关文章:

java - 使用java NodeList合并xml文件

java - 同步惰性初始化时两次检查是否为空的原因是什么?

java - Android 中的 Opencv ANN_MLP 训练

java - 如何在 java 中清除控制台(使用 netbeans)

java - 如何为javafx面板添加边框?

java - Guava :如何从列表和单个元素创建显式排序?

android - 在 Android 中使用 Glide 和 Kotlin 在 ScrollView/RecyclerView 中显示 n 个图像

c++ - 如何在运行时指定 priority_queue 的比较器类

java - 为什么对 treeSet 使用自定义 Comparator 会破坏 String 对象的相等性?

Java Collections Sort 不接受带有 arg 的比较器构造函数