Java系列之Comparable

一:背景

為啥會(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  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                 任何事情都是要靠努力和用心。                                                   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,793評(píng)論 11 349
  • 項(xiàng)目中經(jīng)常會(huì)遇到列表搜索查詢,大部分的查詢是可以通過sql語句來實(shí)現(xiàn)的,有些特殊的搜索排序sql則實(shí)現(xiàn)不了,例如中...
    信徒_allen閱讀 2,719評(píng)論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,669評(píng)論 18 399
  • Java集合框架 Java平臺(tái)提供了一個(gè)全新的集合框架。“集合框架”主要由一組用來操作對(duì)象的接口組成。不同接口描述...
    小石38閱讀 450評(píng)論 0 0
  • 作業(yè): 一、聯(lián)想接龍 1、成功-記憶比賽-數(shù)字-計(jì)算器-訂單-商場-會(huì)員-美容院-護(hù)膚品-化妝棉-棉花-田地-農(nóng)場...
    冬日中的暖陽閱讀 472評(píng)論 8 0

友情鏈接更多精彩內(nèi)容