我对 Java 的 compareTo() 和 Collections.sort() 行为有些困惑。
我应该使用 compareTo() 和 Collections.sort() 对列进行升序排序。
我的标准是(如果出现相同的数字,请对下一个可用列进行排序)。
(1) 文件编号 (2) 过帐日期 (3) 交易日期 (4) 交易参考编号比较
下面是实现 Collection.sort() 方法的代码(在调用方法中执行):
public int compareTo(CreditCardTransactionDetail t) {
int comparison = 0;
int documentNumberComparison = this.getDocumentNumber().compareTo(t.getDocumentNumber());
if (documentNumberComparison != 0) {
comparison = documentNumberComparison;
}
else {
int postingDateComparison = this.getTransactionPostingDate().compareTo(t.getTransactionPostingDate());
if (postingDateComparison != 0) {
comparison = postingDateComparison;
}
else {
int transactionDateComparison = this.getTransactionDate().compareTo(t.getTransactionDate());
if (transactionDateComparison != 0) {
comparison = transactionDateComparison;
}
else {
int transactionRefNumberComparison = this.getTransactionReferenceNumber().compareTo(t.getTransactionReferenceNumber());
LOG.info("\n\n\t\ttransactionRefNumberComparison = " + transactionRefNumberComparison + "\n\n");
if (transactionRefNumberComparison != 0) {
comparison = transactionRefNumberComparison;
}
}
}
return comparison;
}
问题):
(1) 我在做正确的事吗?当比较 = 0 时,它返回 -2。这是正确的行为吗,因为我一直认为它在-1,0,1之间。
(2) 我应该使用比较器吗?
快乐的编程...