使用另一个类的compareTo方法

时间:2016-03-25 06:33:33

标签: java

我有一个名为classes的班级,他有这种比较方法:

@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类中使用sort()从我的classes类中使用我的Weeks方法。

2 个答案:

答案 0 :(得分: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;
    }
    ...
}

答案 1 :(得分:0)

  

我有一个名为classes的班级,他有这种比较方法:

@Override
public int compareTo(Object other) {

这已经错了。你的类应该实现Comparable<classes>(注意classes是一个真正可怕的类名,至少有三个不同的原因),这将迫使方法签名为:

@Override
public int compareTo(classes other) {