一:背景
為啥會(huì)有這篇文章了,其實(shí)也是湊巧,因?yàn)樽罱恿艘粋€(gè)特別蛋疼的需求,那就是本來之前的訂單業(yè)務(wù)線只查詢舊版的接口的,但是現(xiàn)在這個(gè)系統(tǒng)換了,但是訂單數(shù)據(jù)沒有做同步,那么現(xiàn)在訂單接口就有兩個(gè)了,一個(gè)新的一個(gè)舊的,我那個(gè)無語的,所以了在按照日期查詢數(shù)據(jù)的時(shí)候需要排序,那么涉及到類的排序我們就需要按照規(guī)則進(jìn)行需要實(shí)現(xiàn)Comparable接口
二:實(shí)現(xiàn)
所以具體如下
package com.mouse.order.model;
import com.mouse.moon.util.StringUtil;
public class OrderInfo implements Comparable{
private String id;
private String orderCd;//訂單號(hào)
private String productType;//產(chǎn)品類型 酒店,機(jī)票
private String productName;//產(chǎn)品名稱 深圳-北京
private String beginDate;//開始時(shí)間
private String endDate;//結(jié)束時(shí)
private String amount;//數(shù)量
private String orderPrice;//訂單金額
private String status;//訂單狀態(tài)
private String paymentStatus;//支付狀態(tài)
private String channelName;//渠道名稱
private String createDate;//創(chuàng)建時(shí)間
private String payState;
private String orderStatus;
private String orderStatusName;
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getOrderPrice() {
return orderPrice;
}
public void setOrderPrice(String orderPrice) {
this.orderPrice = orderPrice;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPaymentStatus() {
return paymentStatus;
}
public void setPaymentStatus(String paymentStatus) {
this.paymentStatus = paymentStatus;
}
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public String getOrderCd() {
return orderCd;
}
public void setOrderCd(String orderCd) {
this.orderCd = orderCd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPayState() {
return payState;
}
public void setPayState(String payState) {
this.payState = payState;
}
public String getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(String orderStatus) {
this.orderStatus = orderStatus;
}
public String getOrderStatusName() {
return orderStatusName;
}
public void setOrderStatusName(String orderStatusName) {
this.orderStatusName = orderStatusName;
}
public int compareTo(Object o) {
OrderInfo order = (OrderInfo)o;
if(null == this.getCreateDate() || null == order.getCreateDate())
{
return 0;
}
long tTime = StringUtil.str2Long(this.getCreateDate().replaceAll(":", "").replaceAll(" ","").replaceAll("-",""));
long oTime = StringUtil.str2Long(order.getCreateDate().replaceAll(":", "").replaceAll(" ","").replaceAll("-",""));
if (tTime > oTime) {
return -1;
} else if (tTime < oTime) {
return 1;
} else {
return 0;
}
}
}
所以對(duì)實(shí)現(xiàn)Comparable接口的在compareTo方法中進(jìn)行需要的判斷,這里我按照創(chuàng)建時(shí)間進(jìn)行比較。
具體使用出為Collections.sort(orderInfoList);在這里面會(huì)按照類的實(shí)現(xiàn)比較方式進(jìn)行排序操作。
// 按時(shí)間排序
Collections.sort(orderInfoList);
排完序后就需要進(jìn)行截取操作
orderInfoList.subList(0, pageSize) ;
三:比較Comparator
自然順序就是那種String,Integer這種,它們都實(shí)現(xiàn)了Comparable,而Comparator本身就用了策略設(shè)計(jì)模式,可以根據(jù)自己定義的排序規(guī)則進(jìn)行比較排序,想升序,降序都可以。
四:浩語
__
__ _ ____ __| |__ _____ ___
\ \/ \/ / | \ | \\__ \ / _ \
\ /| | / Y \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心。