真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Java怎么實現(xiàn)一個比較器

使用Java怎么實現(xiàn)一個比較器?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)公司服務(wù)項目包括白沙黎族網(wǎng)站建設(shè)、白沙黎族網(wǎng)站制作、白沙黎族網(wǎng)頁制作以及白沙黎族網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,白沙黎族網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到白沙黎族省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Java的特點(diǎn)有哪些

Java的特點(diǎn)有哪些 1.Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡單性、面向?qū)ο蟆⒎植际?、安全性、平臺獨(dú)立與可移植性、動態(tài)性等特點(diǎn)。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

 Java 比較器

Java 中有兩種比較器的實現(xiàn)方式:Comparable(內(nèi)部比較器) 與 Comparator(外部比較器)。

3.1 Comparable 接口

代碼模板:

public class Entity implements Comparable {
  @Override
  public int compareTo(Entity o) {
    return 0;
  }
}

Comparable 接口支持泛型參數(shù),所以一個需要比較實體類只需要按照上面的代碼模板實現(xiàn) Comparable 接口,即可對傳入的另一個同類型的實體類進(jìn)行比較啦。

因為比較方法是定義在實體類中,所以把它叫做內(nèi)部比較器。

3.2 Comparator 接口

代碼模板:

public class EntityComparator implements Comparator {
  @Override
  public int compare(Entity o1, Entity o2) {
    return 0;
  }
}

Comparator 接口同樣也支持泛型參數(shù)。不同的是它是一個比較器類,所以叫它外部比較器。比較器類使用更靈活,我們可以定義多個比較器類用于不同的排序場景。

4 實戰(zhàn)

因為業(yè)務(wù)場景需要先對【狀態(tài)】分組排序后,然后再對【時長】排序,而【時長】的排序又可分為正序與逆序兩種,所以我們采用 Java 外部比較器來實現(xiàn)該業(yè)務(wù)邏輯。

待比較的實體類:

public class Record {
  //狀態(tài)
  private String state;
  //時長
  private String time;
  public Record(String state, String time) {
    this.state = state;
    this.time = time;
  }
  public String getState() {
    return state;
  }
  public String getTime() {
    return time;
  }
  @Override
  public String toString() {
    return "Record{" +
        "state='" + state + '\'' +
        ", time='" + time + '\'' +
        '}';
  }
}

比較器 A:先對【狀態(tài)】排序,然后再對【時長】按正序排序

public class RecordComparator implements Comparator {
  @Override
  public int compare(Record o1, Record o2) {
    final int stateCompare = o1.getState().compareTo(o2.getState());
    if (stateCompare == 0) {
      return o1.getTime().compareTo(o2.getTime());
    }
    return stateCompare;
  }
}

比較器 B:先對【狀態(tài)】排序,然后再對【時長】按逆序(倒序)排序

public class RecordTimeDescComparator implements Comparator {
  @Override
  public int compare(Record o1, Record o2) {
    final int stateCompare = o1.getState().compareTo(o2.getState());
    if (stateCompare == 0) {
      return o2.getTime().compareTo(o1.getTime());
    }
    return stateCompare;
  }
}

單元測試:

Record record1 = new Record("通話中", "00:01:08");
Record record2 = new Record("空閑", "00:18:02");
Record record3 = new Record("通話中", "00:04:04");
Record record4 = new Record("空閑", "00:01:57");
List recordList = new ArrayList<>();
recordList.add(record1);
recordList.add(record2);
recordList.add(record3);
recordList.add(record4);
System.out.println("排序前:" + recordList);
Collections.sort(recordList, new RecordComparator());
System.out.println("排序后【時間正序】:" + recordList);
recordList = new ArrayList<>();
recordList.add(record1);
recordList.add(record2);
recordList.add(record3);
recordList.add(record4);
System.out.println("排序前:" + recordList);
Collections.sort(recordList, new RecordTimeDescComparator());
System.out.println("排序后【時間倒序】:" + recordList);

輸出結(jié)果:

排序前:[Record{state='通話中', time='00:01:08'}, Record{state='空閑', time='00:18:02'}, Record{state='通話中', time='00:04:04'}, Record{state='空閑', time='00:01:57'}]
排序后【時間正序】:[Record{state='空閑', time='00:01:57'}, Record{state='空閑', time='00:18:02'}, Record{state='通話中', time='00:01:08'}, Record{state='通話中', time='00:04:04'}]
排序前:[Record{state='通話中', time='00:01:08'}, Record{state='空閑', time='00:18:02'}, Record{state='通話中', time='00:04:04'}, Record{state='空閑', time='00:01:57'}]
排序后【時間倒序】:[Record{state='空閑', time='00:18:02'}, Record{state='空閑', time='00:01:57'}, Record{state='通話中', time='00:04:04'}, Record{state='通話中', time='00:01:08'}]

看完上述內(nèi)容,你們掌握使用Java怎么實現(xiàn)一個比較器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:使用Java怎么實現(xiàn)一個比較器
網(wǎng)頁鏈接:http://weahome.cn/article/jijisp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部