遇到了一个问题,如果之前用的List集合没排序。突然间就一个快要排一下序,找到了Collections
这个工具类,用Collections.sort(spiderModel); 排序,
List<SpiderModel> spiderModel = new ArrayList<SpiderModel>();
spiderModel.add(new SpiderModel("1", 1, 20));
spiderModel.add(new SpiderModel("220", 2, 20));
spiderModel.add(new SpiderModel("31", 3, 20));
Collections.sort(spiderModel); //这里会编译器会提示报错,告诉我们要实现Comparable<T>这个接口,
这样写就不报错了,而且可以自定义排序,是不是很好,但是,业务嘛,经常变的,哪天又变了排序规则,你还得改代码,
还得上线,改完说不行,又要改过来,到时候你还得改,所以找找有没有别的办法。
public class SpiderModel implements Comparable<SpiderModel>{
/**
* 订单名称
*/
private String spiderOrderName;
/**
* 当前页
*/
private int currentPage;
/**
* 总页数
*/
private int totalPage;
public SpiderModel(String spiderOrderName, int currentPage, int totalPage) {
super();
this.spiderOrderName = spiderOrderName;
this.currentPage = currentPage;
this.totalPage = totalPage;
}
public String getSpiderOrderName() {
return spiderOrderName;
}
public void setSpiderOrderName(String spiderOrderName) {
this.spiderOrderName = spiderOrderName;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
@Override
public int compareTo(SpiderModel o) {
if (this.totalPage < o.getTotalPage())
return -1;
else if (this.totalPage == o.getTotalPage())
return this.spiderOrderName.compareTo(o.getSpiderOrderName());
else
return 1;
}
}
Comparator这个接口,是可以比较的,将Collections.sort(list) 改成 Collections.sort(list, new SpiderCompare());
就可以了,以后更改只需要实现这个接口,增加新的比较规则就行。
public class SpiderCompare implements Comparator<SpiderModel>{
@Override
public int compare(SpiderModel o1, SpiderModel o2) {
if (o1.getTotalPage() < o2.getTotalPage())
return -1;
else if (o1.getTotalPage() < o2.getTotalPage())
return o1.getSpiderOrderName().compareTo(o2.getSpiderOrderName());
else
return 1;
}
}
如果觉得自己写代码,一个很简单的事情,如果写了好多代码,就停下来想想,这么写对不对,我个人做法是,领导给我的任务,我会先想,想好了在做,想的时间不会耽误进度的。
本文转自 豆芽菜橙 51CTO博客,原文链接:http://blog.51cto.com/shangdc/1914554