一:背景
為啥會有這篇文章了,其實也是湊巧,因為最近接了一個特別蛋疼的需求,那就是本來之前的訂單業(yè)務線只查詢舊版的接口的叠艳,但是現(xiàn)在這個系統(tǒng)換了,但是訂單數(shù)據(jù)沒有做同步,那么現(xiàn)在訂單接口就有兩個了就缆,一個新的一個舊的仗哨,我那個無語的,所以了在按照日期查詢數(shù)據(jù)的時候需要排序,那么涉及到類的排序我們就需要按照規(guī)則進行需要實現(xiàn)Comparable接口
二:實現(xiàn)
所以具體如下
package com.mouse.order.model;
import com.mouse.moon.util.StringUtil;
public class OrderInfo implements Comparable{
private String id;
private String orderCd;//訂單號
private String productType;//產(chǎn)品類型 酒店,機票
private String productName;//產(chǎn)品名稱 深圳-北京
private String beginDate;//開始時間
private String endDate;//結(jié)束時
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)建時間
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;
}
}
}
所以對實現(xiàn)Comparable接口的在compareTo方法中進行需要的判斷,這里我按照創(chuàng)建時間進行比較提澎。
具體使用出為Collections.sort(orderInfoList);在這里面會按照類的實現(xiàn)比較方式進行排序操作。
// 按時間排序
Collections.sort(orderInfoList);
排完序后就需要進行截取操作
orderInfoList.subList(0, pageSize) ;
三:比較Comparator
自然順序就是那種String,Integer這種,它們都實現(xiàn)了Comparable唯鸭,而Comparator本身就用了策略設計模式,可以根據(jù)自己定義的排序規(guī)則進行比較排序硅确,想升序目溉,降序都可以。
四:浩語
__
__ _ ____ __| |__ _____ ___
\ \/ \/ / | \ | \\__ \ / _ \
\ /| | / Y \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心菱农。