一、在項目的開發過程中,獲取快遞物流信息之后,對於快遞路由列表信息進行按照時間進行倒序排序,由此做的一些記錄和總結
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的使用,我們可以比較方便的進行多種屬性的排序,這里只是簡要做個記錄,有時間得對實體排序的方法做更多的了解,對於方法的底層實現做進一步的理解。
參考資料:https://blog.csdn.net/lizeyang/article/details/8877868https://blog.csdn.net/qq_37107280/article/details/75570969
-------------------------------
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;
}
}
-------------------------------------------