Objete von Polygon mit TreeSet verwalten

Moin, ich habe eine Klasse Polygon geschrieben

Java:
class Polygon{
private double perimeter =0;
Polygon(Point2D [] points){
for(int i=0; i < points.length; i++){
Point2D p = points[i];
Point2D q = points[(i+1)%points.length];
perimeter += p.distance(q);
}
}
}

Ich möchte jetzt Objekte dieser Klasse mit der Klasse TreeSet verwalten. Und zwar bezüglich des Umfangs.
Wie muss ich dafür die Klasse abändern?
 
Ich möchte jetzt Objekte dieser Klasse mit der Klasse TreeSet verwalten. Und zwar bezüglich des Umfangs.
Wie muss ich dafür die Klasse abändern?

Die Frage ist, was für ein Verhalten Du genau wünschst. Set ist ja eine Menge und ein Element kann nicht mehrfach enthalten sein. -> equals / hashcode. Objbect hat hier aber schon eine Implementierung.
Des Weiteren werden in einer TreeMap die Elemente sortiert. Dazu muss entweder ein Comparator übergeben werden oder die natürliche Ordnung wird verwendet. Letzteses benötigt die Implementierung von Comparable<Polygon>

Wenn Du einen Comparator nutzen willst, dann wäre es ausreichend, einen Getter für Perimeter hinzu zu nehmen.
Aber wie gesagt: Du willst etwas sortiert haben nach perimeter, dann wäre etwas denkbar wie:
```TreeSet<Polygon> myTeeSet = new TreeSet(Comparator.comparing(Polygon::getPerimeter);

Die Frage nach dem "muss" wäre also:
Entweder ein Zugriff auf Perimeter muss kommen oder ein Comparator muss gebaut werden.
Sinn macht es aber, da auch equals / hashcode zu betrachten.
 

Zurück
Oben