亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Java類應該實現類似的呢?

為什么Java類應該實現類似的呢?

呼喚遠方 2019-08-03 07:03:01
為什么Java類應該實現類似的呢?為什么JavaComparable使用?為什么有人要Comparable在課堂上?您需要實現可比較的實際示例是什么?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

這是一個真實的樣本。請注意String還實現Comparable.

class Author implements Comparable<Author>{
    String firstName;
    String lastName;

    @Override
    public int compareTo(Author other){
        // compareTo should return < 0 if this is supposed to be
        // less than other, > 0 if this is supposed to be greater than 
        // other and 0 if they are supposed to be equal
        int last = this.lastName.compareTo(other.lastName);
        return last == 0 ? this.firstName.compareTo(other.firstName) : last;
    }}

晚點.。

/**
 * List the authors. Sort them by name so it will look good.
 */public List<Author> listAuthors(){
    List<Author> authors = readAuthorsFromFileOrSomething();
    Collections.sort(authors);
    return authors;}/**
 * List unique authors. Sort them by name so it will look good.
 */public SortedSet<Author> listUniqueAuthors(){
    List<Author> authors = readAuthorsFromFileOrSomething();
    return new TreeSet<Author>(authors);}



查看完整回答
反對 回復 2019-08-05
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊


可比較定義了一個自然的順序。這意味著當一個對象應該被認為“小于”或“大于”時,定義它。

假設你有一堆整數,你想對它們進行排序。這很容易,只要把它們放在一個分類的集合中,對嗎?

TreeSet<Integer> m = new TreeSet<Integer>(); m.add(1);m.add(3);m.add(2);for (Integer i : m)... // values will be sorted

但是現在假設我有一些自定義對象,其中排序對我來說是有意義的,但是還沒有定義。比方說,我有用郵政編碼和人口密度來表示地區的數據,我想按密度對它們進行排序:

public class District {
  String zipcode; 
  Double populationDensity;}

現在,對這些對象進行排序的最簡單方法是通過實現可比較性來用自然順序來定義它們,這意味著有一種標準的方法來定義這些對象的排序。

public class District implements Comparable<District>{
  String zipcode; 
  Double populationDensity;
  public int compareTo(District other)
  {
    return populationDensity.compareTo(other.populationDensity);
  }}

請注意,您可以通過定義一個比較器來完成等效的事情。不同之處在于,比較器定義了排序邏輯。對象外部..也許在一個單獨的過程中,我需要通過郵政編碼對相同的對象進行排序-在這種情況下,排序不一定是對象的屬性,或者與對象的自然排序不同。您可以使用外部比較器來定義對整數的自定義排序,例如通過按字母順序對它們進行排序。

基本上,排序邏輯必須存在于某個地方??赡苁?

  • 在對象本身中,如果它是自然可比較的(擴展可比較性)。整數)

  • 在外部比較器中提供,如上面的示例所示。




查看完整回答
反對 回復 2019-08-05
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

引用javadoc;

此接口對實現該接口的每個類的對象強制執行總體排序。這種排序稱為類的自然排序,類的比較方法稱為自然比較法。

實現此接口的對象的列表(和數組)可以通過Collection s.Sort(和Arrays.Sort)自動排序。實現此接口的對象可以用作排序映射中的鍵或排序集中的元素,而無需指定比較器。

編輯:.,并使重要的一點大膽。




查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號