2016-03-25 59 views
1

我有一個叫classes類誰擁有這個compareTo方法:使用compareTo方法

@Override 
public int compareTo(Object other) { 
    Cours ot = (Cours)other; 
    String heure2 = ot.heure; 
    int autre = Integer.parseInt(heure2.substring(0,2)); 
    int le = Integer.parseInt(this.heure.substring(0,2)); 

    if (autre > le) { 
     return 1; 
    } 

    if (autre == le) { 
     return 0; 
    } else { 
     return -1; 
    } 

} 

我還有一個叫day類,它具有的classes列表:

private List<Cours> journee; 

而且一分類方法:

public void TrieListe() { 
    Collections.sort(journee); 
} 

當我使用TrieListe()一切正常,我可以排序列表。

但我也添加了Weeks另一個類,它包含的Days 列表,現在我想從該類使用TrieList():

private List<Days> leWeek; 

public void TrieListe() { 
    Collections.sort(leWeek); 
} 

那麼,怎樣才能用我compareTo方法從我classes在我的Weeks類中使用sort()的類。

+0

你確定要使用相同的compareTo方法?你的「周」課有一個叫「heure」的成員? – RubioRic

+0

http://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-java.util.Comparator-也許 –

+0

我想比較每一天使用在類中的「heure」屬性因此,按「heure」排序 – yoyani

回答

0

創建一個新的abstractAComparableByHour並使您的類擴展它。

public abstract class AComparableByHour implements Comparable<AComparableByHour> { 

public abstract String getHeure(); 

// Your comparison method goes here 
@Override 
public int compareTo(AComparableByHour ot) { 
    String heure2 = ot.getHeure(); 

    int autre = Integer.parseInt(heure2.substring(0,2)); 
    int le = Integer.parseInt(this.getHeure().substring(0,2)); 

    if(autre > le){ 
     return 1; 
    } 

    if(autre == le){ 
     return 0; 
    } else { 
     return -1; 
    } 
} 

}

public class Cours extends AComparableByHour { 
    // This method is mandatory now. 
    // You could move it to the new superclass 
    public String getHeure() { 
      return heure; 
    } 
    ... 
} 

public class Days extends AComparableByHour { 
    public String getHeure() { 
     return heure; 
    } 
    ... 
} 
0

我有一個叫classes類誰擁有這個compareTo方法:

@Override 
public int compareTo(Object other) { 

這已經是錯誤的。你的類應該實現Comparable<classes>(指出classes是一類真正可怕的名字,至少有三個不同的原因),這將迫使該方法的簽名是:

@Override 
public int compareTo(classes other) { 
+0

這是如何回答調用不同類的相同比較方法的問題? – RubioRic