Hallo,
ich habe eine kleine Aufgabe bekommen, die sich um den Einsatz des Comparators dreht.
Vorab: Unsere "Lehre" ist diesbezüglich etwas chaotisch, deswegen habt bitte Nachsicht (bin auch kein Java-Profi, kommt).
Was zu tun war: Es sollte eine Funktion geschrieben werden, die 2D-Punkte einer Liste vergleicht und ordnet. Zum Einsatz kam hier der Comparator (mit dem ich leider keinerlei Erfahrung habe)
Ordnung:
Wenn p1.x kleiner (links) p2.x >>> -1
Wenn p1.x größer p2.x >>> 1
Bei Gleichheit wird y-Wert rangezogen
Alle ToDo sind in den Kommentaren, dazwischen meine Codefragmente:
Alles anzeigen
Ich habe das jetzt über if-Bedingung gemacht, aber wo setze ich da den Comparator ein? Bisher habe ich den doch gar nicht benutzt, oder?
Wie sähe so eine Ordnung mit Comparator denn überhaupt aus?
Danke im Voraus für jede Hilfe!
ich habe eine kleine Aufgabe bekommen, die sich um den Einsatz des Comparators dreht.
Vorab: Unsere "Lehre" ist diesbezüglich etwas chaotisch, deswegen habt bitte Nachsicht (bin auch kein Java-Profi, kommt).
Was zu tun war: Es sollte eine Funktion geschrieben werden, die 2D-Punkte einer Liste vergleicht und ordnet. Zum Einsatz kam hier der Comparator (mit dem ich leider keinerlei Erfahrung habe)
Ordnung:
Wenn p1.x kleiner (links) p2.x >>> -1
Wenn p1.x größer p2.x >>> 1
Bei Gleichheit wird y-Wert rangezogen
Alle ToDo sind in den Kommentaren, dazwischen meine Codefragmente:
Quellcode
- [...] /**
- * Stellt einen Comparator für den Fall x vor y zur Verfügung.
- */
- private static Comparator<Point2d> xy_cmp = new Comparator<Point2d>(){
- @Override
- public int compare(Point2d p1, Point2d p2) {
- //TODO: vergleiche p1 und p2 über x-Wert
- // p1 links von p2 --> -1
- if(p1.getX() < p2.getX())
- {
- return -1;
- }
- // p1.x gleich p2.x --> überprüfe die Lage von y (Rückgabe analog zum anderen Comparator)
- if(p1.getX() == p2.getX())
- {
- if(p1.getY() < p2.getY())
- {return -1;}
- else if(p1.getY() > p2.getY())
- {return 1;}
- }
- // p1 rechts von p2 --> 1
- if(p1.getX() > p2.getX())
- {
- return 1;
- }
- // wenn identisch, dann überprüfe Ordnung mit y-Wert
- // >>> Diese Anweisung ist bereits im Fall p1.x gleich p2.x implementiert (siehe oben)!
- int i = 1/0;
- return i;
- }
- };
- /**
Ich habe das jetzt über if-Bedingung gemacht, aber wo setze ich da den Comparator ein? Bisher habe ich den doch gar nicht benutzt, oder?
Wie sähe so eine Ordnung mit Comparator denn überhaupt aus?
Danke im Voraus für jede Hilfe!