使用Java中的可比性按两个字段的升序和降序对对象列表进行排序

时间:2019-01-01 16:19:47

标签: java

我已经找到了一些有关使用多个字段对对象列表进行排序的结果,但是我不明白如何使用可比的两个字段按升序和降序对列表进行排序这是我的代码,我想对列表进行排序按降序排列(datejournal),然后按升序排列codejournal

public class journal implements Comparable<journal>{
    private String codeJournal;
    private String dateLivraison;
    private int qteJournal;

    public String getCodeJournal() {
        return codeJournal;
    }
    public void setCodeJournal(String codeJournal) {
        this.codeJournal = codeJournal;
    }
    public String getDateLivraison() {
        return dateLivraison;
    }
    public void setDateLivraison(String dateLivraison) {
        this.dateLivraison = dateLivraison;
    }
    public int getQteJournal() {
        return qteJournal;
    }
    public void setQteJournal(int qteJournal) {
        this.qteJournal = qteJournal;
    }
    @Override
    public String toString() {
        return "journal [codeJournal=" + codeJournal + ", dateLivraison=" + dateLivraison + ", qteJournal=" + qteJournal
                + "]";
    }
    @Override
    public int compareTo(journal arg0) {
        if(this.dateLivraison.equals(arg0.getDateLivraison())){
            return -this.dateLivraison.compareTo(arg0.getDateLivraison());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以按如下所示比较第一个DateJournal(按降序)和之后的CodeJournal(按升序):

@Override
public int compare(final journal j1, final journal j2) {
    int res;
    res = j2.getDateLivraison().compareTo(j1.getDateLivraison());
    if (res == 0)
        res = j1.getCodeJournal().compareTo(j2.getCodeJournal());
    return res;
}