美文网首页
Java系列之Comparable

Java系列之Comparable

作者: 吴世浩 | 来源:发表于2017-05-10 23:40 被阅读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  \/ __ \(  <_> )
                                  \/\_/ |____/|___|  (____  /\____/ 
                                                        \/     \/          
                                     任何事情都是要靠努力和用心。                                                   
    

    相关文章

      网友评论

          本文标题:Java系列之Comparable

          本文链接:https://www.haomeiwen.com/subject/wgozvttx.html