- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我了解了 Comparable
接口(interface),为此类必须实现 compareTo
方法。我正在使用该方法的一个项目:
public class EmployeeAssignmentTotal implements Comparable<EmployeeAssignmentTotal>, Serializable {
private Employee employee;
private int total;
....
public int compareTo(EmployeeAssignmentTotal other) {
return new CompareToBuilder()
.append(employee, other.employee)
.append(total, other.total)
.toComparison();
}
CompareToBuilder
在这里具体做了什么?它如何与 employee
和 total
属性交互?
我读过 the javadocs ,但我无法弄清他们对构造函数和多个 append
所做的事情。这个问题是否表明意图不明和零研究?
最佳答案
我试图弄清楚 CompareToBuilder 是如何工作的,我看到了这篇文章,但我对答案并不满意。例如,toComparison 方法应返回一个负整数、一个正整数或零,因为构建器已将“左侧”判断为小于、大于或等于“右侧”。
所以我的问题是附加属性的顺序如何影响比较。为了回答这个问题,我唯一能做的就是检查源代码,我发现了这个:
public CompareToBuilder append(int lhs, int rhs) {
if (this.comparison != 0) {
return this;
}
this.comparison = ((lhs > rhs) ? 1 : (lhs < rhs) ? -1 : 0);
return this;
}
所以,基本上发生的事情是它会根据您添加它们的顺序比较属性。在您的代码示例中,将首先评估“员工”。如果左侧属性的计算结果小于或大于右侧,则忽略总数。
仅当“employee”的计算结果等于时,才会计算属性“total”。
关于java - org.apache.commons.lang.builder.CompareToBuilder 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161370/
在同行评审期间,一位开发人员似乎对实现我选择按 3 个属性排序的compareToBuilder 解决方案的想法感到震惊。他的印象是,我的类中的compareTo 方法会为每个单独的比较创建过多数量的
我想使用 Apache Commons CompareToBuilder 按多个字段(其中一些按降序排列)对集合进行排序 即: Collections.sort(pizzas, new Compara
我了解了 Comparable 接口(interface),为此类必须实现 compareTo 方法。我正在使用该方法的一个项目: public class EmployeeAssignmentTot
在 Java 8 之前,我们实现了 Comparable.compareTo(...)像这样: public int compare(Person a, Person b) { return
package myJavaPrograms; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R
我是一名优秀的程序员,十分优秀!