2016-03-25 61 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