Java系列之Comparable

一:背景

為啥會有這篇文章了,其實也是湊巧,因為最近接了一個特別蛋疼的需求,那就是本來之前的訂單業(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  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                 任何事情都是要靠努力和用心菱农。                                                   
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缭付,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子循未,更是在濱河造成了極大的恐慌陷猫,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件的妖,死亡現(xiàn)場離奇詭異绣檬,居然都是意外死亡,警方通過查閱死者的電腦和手機嫂粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門娇未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人星虹,你說我怎么就攤上這事零抬。” “怎么了宽涌?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵平夜,是天一觀的道長。 經(jīng)常有香客問我卸亮,道長忽妒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮锰扶,結(jié)果婚禮上献酗,老公的妹妹穿的比我還像新娘。我一直安慰自己坷牛,他們只是感情好罕偎,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著京闰,像睡著了一般颜及。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹂楣,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天俏站,我揣著相機與錄音,去河邊找鬼痊土。 笑死肄扎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的赁酝。 我是一名探鬼主播犯祠,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼酌呆!你這毒婦竟也來了衡载?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤隙袁,失蹤者是張志新(化名)和其女友劉穎墙懂,沒想到半個月后状原,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冻押,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鬓椭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坛梁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片而姐。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖划咐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钧萍,我是刑警寧澤褐缠,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站风瘦,受9級特大地震影響队魏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一胡桨、第九天 我趴在偏房一處隱蔽的房頂上張望官帘。 院中可真熱鬧,春花似錦昧谊、人聲如沸刽虹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涌哲。三九已至,卻和暖如春尚镰,著一層夾襖步出監(jiān)牢的瞬間阀圾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工狗唉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留初烘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓分俯,卻偏偏與公主長得像肾筐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子澳迫,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實習到現(xiàn)在局齿,面了一些公司,掛了不少橄登,但最終還是拿到小米抓歼、百度、阿里拢锹、京東谣妻、新浪、CVTE卒稳、樂視家的研發(fā)崗...
    時芥藍閱讀 42,213評論 11 349
  • 項目中經(jīng)常會遇到列表搜索查詢蹋半,大部分的查詢是可以通過sql語句來實現(xiàn)的,有些特殊的搜索排序sql則實現(xiàn)不了充坑,例如中...
    信徒_allen閱讀 2,580評論 0 1
  • 1. Java基礎部分 基礎部分的順序:基本語法减江,類相關的語法,內(nèi)部類的語法捻爷,繼承相關的語法辈灼,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • Java集合框架 Java平臺提供了一個全新的集合框架也榄⊙灿ǎ“集合框架”主要由一組用來操作對象的接口組成。不同接口描述...
    小石38閱讀 359評論 0 0
  • 作業(yè): 一、聯(lián)想接龍 1降宅、成功-記憶比賽-數(shù)字-計算器-訂單-商場-會員-美容院-護膚品-化妝棉-棉花-田地-農(nóng)場...
    冬日中的暖陽閱讀 372評論 8 0