Personen sortieren mit Comparator

Wayne139

Aktives Mitglied
Hallo, ich möchte Personen alphabetisch nach ihrem Nachnamen sortieren.
Ich soll eine Klasse PersonComparator erstellen, die eine Schnittstelle Comparator implementiert und mit der compare-Methode
die Sortierung macht. Wie muss ich das machen mit PersonComparator und Comparator?

Mein Interface Comparator
Java:
public interface Comparator<Person> {
    String compare();
}

Meine Klasse PersonComparator
Java:
public class PersonComparator implements Comparator<Person>{
   
    String <Person> compare(){
    }   
}

Meine Klasse Personen
Java:
public class Person {
    private String firstName;
    private String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public String getLastName() {
        return this.lastName;
    }
}
 
K

kneitzel

Gast
Das Interface Comparator existiert bereits und das sollst du bestimmt auch verwenden:

Zu deinem Code fällt mir ansonsten kaum etwas ein:
Deine Idee einer compare Methode verstehe ich nicht - keine Parameter und String als Ergebnis? Und die Konstrukte sind teilweise ungültig. String ist z.B. kein generischer Typ so dass String<Person> keinen Sinn ergibt.

Aber der Hinweis hilft dir hoffentlich, denn so bekommst du das richtige Interface, das du nur implementieren musst.
 

Wayne139

Aktives Mitglied
Ich habe meine Klasse PersonComparator jetzt angepasst. Wie würde ich das hinbekommen, mehrere Personen zu sortieren?
Java:
import java.util.*;

public class PersonComparator implements Comparator<Person>{
    
    public int compare(Person o1, Person o2){
        return o1.getLastName().compareTo(o2.getLastName());
    }   
    
    public static void main(String[] args) {
        Person mm = new Person("M", "M");
        Person zz = new Person("Z","Z");
        Person ee = new Person("E","E");
        System.out.println(zz.compare(mm,zz));
    }   
}
 

JennyL

Bekanntes Mitglied
Java:
import java.util.SortedSet;
import java.util.TreeSet;

public class Person implements Comparable<Person> {
	private static SortedSet<Person> persons = new TreeSet<Person>();
	private String firstName;
	private String lastName;

	public Person(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return this.firstName;
	}

	public String getLastName() {
		return this.lastName;
	}

	@Override
	public int compareTo(Person o) {
		int i1 = lastName.compareTo(o.lastName);
		if (i1 == 0)
			return firstName.compareTo(o.firstName);
		return i1;
	}

	@Override
	public String toString() {
		return String.format("lastName=%s, firstName=%s", firstName, lastName);
	}

	public static void main(String[] args) {
		persons.add(new Person("Herbert", "Herbert"));
		persons.add(new Person("Nobert", "Nobert"));
		persons.add(new Person("Hubert", "Hubert"));
		persons.forEach(System.out::println);
	}
}
 
K

kneitzel

Gast
Dem TE nützt Compareable nichts, wenn die Anforderung explizit Comparator erlangt:
Ich soll eine Klasse PersonComparator erstellen, die eine Schnittstelle Comparator implementiert und mit der compare-Methode
die Sortierung macht
 

Wayne139

Aktives Mitglied
Ich habe meinen Code nochmal etwas bearbeitet. Macht das so Sinn?
Direkt in der dritten Zeile bekomme ich noch eine Fehlermeldung:
The type PersonComparator must implement the inherited abstract method Comparator<Person>.compare(Person, Person)

Java:
import java.util.*;

public class PersonComparator implements Comparator<Person> {

    public static Comparator<Person> COMPARE_BY_NAME = new Comparator<Person>() {
        public int compare(Person o1, Person o2){
            return o1.getLastName().compareTo(o2.getLastName());
        }
    };
    

    public static void main(String[] args) {
        List<Person> liste = new ArrayList<Person>();

        liste.add(new Person("D", "D"));
        liste.add(new Person("B", "B"));
        liste.add(new Person("A", "A"));
        Collections.sort(liste,Person.COMPARE_BY_NAME);
        
    }
}
 
K

kneitzel

Gast
Deine Klasse selbst hat keine compare Methode.

Die vorhandene compare Methode ist in einer neuen anonymen Klasse.

Die Methode muss direkt in der Klasse stehen und die statische Konstante hat nur ein new ...(); ohne geschweifte Klammern!
 

JennyL

Bekanntes Mitglied
Dem TE nützt Compareable nichts, wenn die Anforderung explizit Comparator erlangt:
Hm dann vielleicht doch so:
Java:
import java.util.Comparator;
import java.util.SortedSet;
import java.util.TreeSet;

public class Person {
	private static final class ComparingPersonsAlphabeticalComparator implements Comparator<Person> {
		@Override
		public int compare(Person p1, Person p2) {
			int i1 = p1.lastName.compareTo(p2.lastName);
			if (i1 == 0)
				return p1.firstName.compareTo(p2.firstName);
			return i1;
		}
	}

	private static SortedSet<Person> persons = new TreeSet<Person>(new ComparingPersonsAlphabeticalComparator());
	private String firstName;
	private String lastName;

	public Person(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return this.firstName;
	}

	public String getLastName() {
		return this.lastName;
	}

	@Override
	public String toString() {
		return String.format("%s, %s", lastName, firstName);
	}

	public static void main(String[] args) {
		persons.add(new Person("Herbert", "Herbert"));
		persons.add(new Person("Nobert", "Nobert2"));
		persons.add(new Person("Nobert", "Nobert"));
		persons.add(new Person("Hubert", "Hubert"));
		persons.forEach(System.out::println);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
K Geburtsdaten von Mehreren Personen speichern und Alter ausgeben Java Basics - Anfänger-Themen 11
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
M Array von Personen anzeigen Java Basics - Anfänger-Themen 3
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
G Wie lege ich ein Array für 10 Personen an???? Java Basics - Anfänger-Themen 25
U Umsetzungsfrage: Personen mit mehreren "Rollen" Java Basics - Anfänger-Themen 9
M Projekt Personen Java Basics - Anfänger-Themen 10
R Finde meinen Fehler nicht! - Namen von Personen vergleichen Java Basics - Anfänger-Themen 6
S Geburtstage von Personen Java Basics - Anfänger-Themen 53
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben