compareTo()- und equals-Methode

jono

Top Contributor
Hallo,

mein Programm soll eine .csv einlesen:
Java:
ID    TEAM    LASTNAME    FIRSTNAME    MAIL
3    team1    Cooper    Alice    [EMAIL]alcooper3@acme.edu[/EMAIL]
1    team1    Cooper    Alicia    [EMAIL]acooper@acme.edu[/EMAIL]
2    team1    Cooper    Alice    [EMAIL]alcooper2@acme.edu[/EMAIL]
8    team1    Brown    Charlie    [EMAIL]cbrown8@acme.edu[/EMAIL]
9    team1    Csesknik    Freddie    [EMAIL]fcseksnik9@acme.edu[/EMAIL]
4    team2    Doe    John    [EMAIL]jdoe4@acme.edu[/EMAIL]
5    team2    Cooper    Alice    [EMAIL]alcooper5@acme.edu[/EMAIL]
6    team2    Doe    Albert    [EMAIL]adoe6@acme.edu[/EMAIL]
7    team2    Zimbob    Xavier    [EMAIL]xzimbob7@acme.edu[/EMAIL]

Das angehängte UML-Diagramm beschreibt die Situaion. Dort steht ja auch compared by lastname, firstname und email. Das habe ich so gemacht:

Java:
@Override
    public int compareTo(Person o) {
        if (this.firstname.compareTo(o.getFirstname()) != 0) { // firstname, lastname, email
            return this.firstname.compareTo(o.getFirstname());

        }

        if (this.lastname.compareTo(o.getLastname()) != 0) {// firstname, lastname, email
            return this.lastname.compareTo(o.getLastname());
        }

        return this.email.compareTo(o.getEmail());

    }

Nun haben wir dafür einen vorgefertigten Test bekommen, der mir jetzt die folgende Fehlermeldung wirft:
team1 ==> expected: <[8, 2, 3, 1, 9] but was <[2, 3, 1, 8, 9]>

Die Methode vergleicht also richtig, sortiert aber nicht richtig, worauf es ja ankommt. Ich möchte richtig sortieren, da ich ein TreeSet von der Klasse Person implementiert habe, was ja auch aus dem UML hervorgeht.[/Code]
 

Anhänge

  • teams.png
    teams.png
    54,1 KB · Aufrufe: 4
In dem UML steht bei compareTo: lastName, firstName, email - Du sortierst aber nach firstName, lastName, eMail.

Edit: War Robert schneller 🙂
 

Zurück
Oben