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) コンパレータを使用する必要がありますか?
楽しいプログラミング...