设计一个可以按升序或降序排序的compareTo

时间:2016-02-20 20:24:30

标签: java

我有一个类状态,它是一个包含名称的对象,以及我们认为边缘的状态列表。我想按名称对这个边缘列表进行排序,按升序和降序排列。我有一个想法,可以覆盖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'参数来指定我是想要升序还是降序?如果没有,我可以通过其他方式实现这一目标吗?

1 个答案:

答案 0 :(得分:3)

你可以通过反转来降低列表:

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

PS:为什么你的班级命名为州?从我看到的这个班级代表一个国家......