Java系列之Comparable

2017-05-10  本文已影响11人  吴世浩

一:背景

为啥会有这篇文章了,其实也是凑巧,因为最近接了一个特别蛋疼的需求,那就是本来之前的订单业务线只查询旧版的接口的,但是现在这个系统换了,但是订单数据没有做同步,那么现在订单接口就有两个了,一个新的一个旧的,我那个无语的,所以了在按照日期查询数据的时候需要排序,那么涉及到类的排序我们就需要按照规则进行需要实现Comparable接口

二:实现

所以具体如下

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;//产品类型 酒店,机票
    private String productName;//产品名称 深圳-北京
    private String beginDate;//开始时间
    private String endDate;//结束时
    private String amount;//数量
    private String orderPrice;//订单金额
    private String status;//订单状态
    private String paymentStatus;//支付状态
    private String channelName;//渠道名称
    private String createDate;//创建时间

    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;
        }
    }
}

所以对实现Comparable接口的在compareTo方法中进行需要的判断,这里我按照创建时间进行比较。

具体使用出为Collections.sort(orderInfoList);在这里面会按照类的实现比较方式进行排序操作。

// 按时间排序
Collections.sort(orderInfoList);

排完序后就需要进行截取操作

 orderInfoList.subList(0, pageSize) ;

三:比较Comparator
自然顺序就是那种String,Integer这种,它们都实现了Comparable,而Comparator本身就用了策略设计模式,可以根据自己定义的排序规则进行比较排序,想升序,降序都可以。

四:浩语

                                           __                                                        
                            __  _  ____ __|  |__ _____    ___
                            \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                             \     /|  |  /   Y  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                 任何事情都是要靠努力和用心。                                                   
上一篇下一篇

猜你喜欢

热点阅读