ich ein Autor Klasse wie folgt geschrieben haben: speichernListe sortieren mein Nachname
public final class Author implements Comparator<Author> {
private final String authorFirstname;
private final String authorLastname;
public Author(String authorFirstname, String authorLastname){
this.authorFirstname = authorFirstname;
this.authorLastname = authorLastname;
}
//Left out equals/HashCode
@Override
public int compare(Author o1, Author o2) {
// TODO Auto-generated method stub
return this.authorLastname.compareTo(o2.getLastname());
}
}
Ich möchte, dass sie in einer List
Sammlung und sortieren sie nach dem Nachnamen. Ich habe Java 8 comparable gelesen, diese zwei Beispiele (1, 2). Habe ich es richtig umgesetzt?
Im Allgemeinen wird eine 'compareTo' Methode für ein Objekt sollte der kanonische und gebräuchlichste Vergleich für das Objekt sein. Eine bessere Option ist die Verwendung von 'Comparator.comparing (Author :: getLastname)', wenn Sie einen spezifischeren Vergleicher benötigen. – 4castle
Angenommen, Sie verweisen diese [post] (https://www.mkyong.com/java8/java-8-lambda-comparator-example/) auf den Komparator java 8. –
Um dem Punkt von @ 4castle hinzuzufügen, wird empfohlen, dass vergleichbare Klassen mit * übereinstimmen, was bedeutet, dass "a.compareTo (b) == 0" immer gleich "a.equals (b)" sein sollte. Ich vermute, das ist hier nicht der Fall. – shmosel