Methoden compareable ? Wie umsetzbar ?

korbayy

Mitglied
hallo

ich habe 2 Klassen : State und Tupel

Letztendlich sollte dies einen Automaten darstellen.

D.h jeder State durchnummeriert von 1 - n hat eine Tupelliste ( diese sagt aus mit welcher zahl zu welchem anderen State gesprungen werden kann ). [ zB State 1 tupellist : (1,3) , (1,2) , (1,4) etc. ]
Nun soll ich diesen Automaten sortiert auf der Konsole ausgeben.
Sprich:
(1,2)
(1,3)
(1,4)
Wie ist das umsetzbar ?
hab irgendetwas mit "implements comparable" gelesen. Wie macht man das ? bzw wo ruft man das dann auf ? direkt beim toString aufruf oder sollte man die schon sortiert einfügen ?
 
Tupel könnte z.B. Comparable<Tuple> implementieren, dann kann z. B. eine List<Tupel> mit Collections.sort(aListOfTuples) sortiert werden.
Wie sieht denn die Tupel-Klasse aus?
 
Java:
// Die State klasse :

private List<Collection<Verbindung>> listeDerVerbindungen = new ArrayList<Collection<Verbindung>>();

public String toString() {
        String display = "";
        for (Collection<Verbindung> verbindungsliste: listeDerVerbindungen) {
            for (Verbindung verb : verbindungslsite) {
                display += "\n" + verb.toString();
            }
        }
        return display;
    }

// etc etc...

//Die Tupel Klasse:

public class Verbindung implements Comparable<Verbindung> {
    private State herkunft;
    private State ziel;
    private char uebergang;

public int compareTo(Transition transition) {
       // TO DO !
    
        return 0;
    }
public String toString() {
        return ("(" + herkunft.getName() + ", "
                    + ziel.getName() + ") " + uebergang);
    }
}



Mir fehlt hier einfach die Erfahrung bzw das Wissen , wie man ein "compareable" selbst schreibt. Wie kann ich das nun so machen , dass es mir die Verbindungen in der korrekten reihenfolge ausgibt ?
 
Zuletzt bearbeitet von einem Moderator:
Was sagt der Compiler zu deinem Code?
Wenn Verbindung das Interface Comparable<Verbindung> implementiert, muss sie eine Methode compareTo(Verbindung) anbieten. Ich sehe aber nur compareTo(Transition).
 
Comparable impliziert, dass es so etwas wie eine "natürliche Ordnung" gibt.
Was ist genau deine Frage: was die korrekte Reihenfolge ist, oder welchen Code man schreiben muss, damit die Sortierung in der korrekten Reihenfolge erfolgt?
 

Neue Themen


Zurück
Oben