2016-03-25 22 views
1

Ich habe eine Klasse namens classes, die diese Methode compareTo hat:Verwenden compareTo-Methode von einer anderen Klasse

@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; 
    } 

} 

Ich habe eine andere Klasse day genannt, die eine Liste von classes hat:

private List<Cours> journee; 

Und ein Methode zum Sortieren der Klassen:

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

Wenn ich TrieListe() benutze funktioniert alles gut, ich kann die Liste sortieren.

Aber ich habe eine andere Klasse hinzugefügt Weeks genannt, die eine Liste der Days enthält Und nun möchte ich TrieList() von dieser Klasse verwenden:

private List<Days> leWeek; 

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

So wie kann ich von meiner compareTo Methode verwenden, um meine classes Klasse mit sort() in meiner Weeks Klasse.

+0

Sind Sie sicher, dass Sie die verwenden gleiche compareTo Methode? Ihre "Weeks" -Klasse hat ein Mitglied namens "heure"? – RubioRic

+0

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

+0

Ich möchte jeden Tag mit vergleichen die "heure" -Eigenschaften in den Klassen So gibt es sortiert nach "heure" – yoyani

Antwort

0

Erstellen Sie eine neue abstract Klasse AComparableByHour und lassen Sie Ihre Klassen erweitern.

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

Ich habe eine Klasse namens classes, die diese Methode compareTo hat:

@Override 
public int compareTo(Object other) { 

Das ist schon falsch. Ihre Klasse sollte implementieren Comparable<classes> (Hinweis darauf, dass classes ist ein wirklich schrecklicher Name für eine Klasse, für mindestens drei getrennte Gründe), die die Methodensignatur zwingen:

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

Wie beantwortet das die Frage nach der gleichen Vergleichsmethode aus verschiedenen Klassen? – RubioRic

Verwandte Themen