您的位置:首页 > 其它

使用Collections.sort()实现List正反排序的方法

2016-03-31 18:52 549 查看
今天遇到了这个问题,了解到有两种解决方法:
1,具体的比如List<Sort>这个List, Sort类实现Comparable接口,然后实现compareTo(Object o)方法
2,新建newComparator比较器类实现Comparator接口,实现compare(Object o1, Object o2)方法
例子:

servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String order = request.getParameter("order");
        String number = request.getParameter("number");
        String[] array = number.split(",");
        List<Num> arrayList = new ArrayList<Num>();
        for (String one : array) {
            arrayList.add(new Num(Integer.parseInt(one), order));
        }
        if (order.equals("asc")) {
            Collections.sort(arrayList);
        } else {
            Collections.sort(arrayList);
        }
        String sortedNum = "";
        Iterator iter= arrayList.iterator();
        while (iter.hasNext()) {
            sortedNum += iter.next();
        }
        request.setAttribute("sortedNum", sortedNum);
        request.getRequestDispatcher("sorted.jsp").forward(request, response);
    }

Num类(需要比较的实体类):

public class Num implements Comparable{
    public int value;
    public String order;

    public Num(Integer value, String order) {
        this.value = value;
        this.order = order;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return value+"";
    }
    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        Num b = (Num)o;
        if (b.order.equals("asc")) {
            return this.value - b.value;
        } else {
            return b.value - this.value;
        }
    }
}

正序比较器:
public class AscComparator implements Comparator{
 @Override
 public int compare(Object o1, Object o2) {
  // TODO Auto-generated method stub
  Num a = (Num)o1;
  Num b = (Num)o2;
  int x = a.value;
  int y = b.value;
  return (x < y) ? -1 : ((x == y) ? 0 : 1);
 }
}

倒序比较器:

public class DescComparator implements Comparator{
    @Override
    public int compare(Object o1, Object o2) {
        // TODO Auto-generated method stub
        Num a = (Num)o1;
        Num b = (Num)o2;
        int x = a.value;
        int y = b.value;
        return (x < y) ? 1 : ((x == y) ? 0 : -1);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: