一、在项目的开发过程中,获取快递物流信息之后,对于快递路由列表信息进行按照时间进行倒序排序,由此做的一些记录和总结
1 // 获取物流信息 ExpressRouteVO实体在后面
2 List<ExpressRouteVO> routeList = getExpressRouteByNo(entity.getBillNo());
3
4 Comparator mycmp1 = ComparableComparator.getInstance();
5 //默认为正序,我们这边设置为逆序
6 mycmp1 = ComparatorUtils.reversedComparator(mycmp1);
7 ArrayList<Object> sortFields = new ArrayList<Object>();
8 sortFields.add(new BeanComparator("time", mycmp1));
9 //创建一个排序链
10 ComparatorChain multiSort = new ComparatorChain(sortFields);
11 Collections.sort(routeList, multiSort);
12 params.put("expressDataList", routeList);
二、以下是在网络找到的一些参考,可以实现多种属性的排序
1 Comparator mycmp1 = ComparableComparator.getInstance ();
2 mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序
3
4 Comparator mycmp2 = ComparableComparator.getInstance ();
5 mycmp2 = ComparatorUtils. nullHighComparator(mycmp2); //允许null
6
7 // 声明要排序的对象的属性,并指明所使用的排序规则,如果不指明,则用默认排序
8 ArrayList<Object> sortFields = new ArrayList<Object>();
9 sortFields.add( new BeanComparator("age" , mycmp1)); //主排序(第一排序)
10 sortFields.add( new BeanComparator("grade" , mycmp2)); //次排序(第二排序)
11
12 // 创建一个排序链
13 ComparatorChain multiSort = new ComparatorChain(sortFields);
14
15 // 开始真正的排序,按照先主,后副的规则
16 Collections.sort (users , multiSort);
三,通过以下ComparableComparator的使用,我们可以比较方便的进行多种属性的排序,这里只是简要做个记录,有时间得对实体排序的方法做更多的了解,对于方法的底层实现做进一步的理解。
import java.io.Serializable;
/**
* 路由节点信息
*/
public class ExpressRouteVO implements Serializable {
private String time;
private String address;
private String remark;
private String opCode;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getOpCode() {
return opCode;
}
public void setOpCode(String opCode) {
this.opCode = opCode;
}
}
-------------------------------------------