簡體   English   中英

設計一個compareTo,可以按升序或降序排序

[英]Design a compareTo that can sort in ascending or descending order

我有一個狀態類,它是一個包含名稱的對象,以及一個我們認為是邊的狀態列表。 我想按名稱對邊緣列表進行升序和降序排序。 我有一個重寫compareTo函數並利用Collections.sort()的想法。

public class State { 
    private String name;
    private ArrayList<States> edges;      
    ...

    public ArrayList<States> getEdges(){
        return edges;
    }

    public int compareTo(State s, int type){
        switch(type){
            case 0: 
                // we want ascending order, return as normal
                return this.name.compareTo(s.getName());
            case 1:
                // we want descending order, negate our answer
                return -this.name.compareTo(s.getName());
        }
        return -1;
     }

是否可以使用Collection.sort(),但能夠提供'type'參數來指定我要升序還是降序? 如果沒有,我還有什么其他方法可以做到這一點?

您可以通過反轉列表使列表降序:

Collection<?> collection = ...;
Collections.reverse(collection);

PS:您的班級為何被命名為國家? 從我看來,班級代表着一個國家...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM