Servus,
Comparator und TreeSets sind für mich Neuland, daher hänge ich gerade etwas bei der Fehlersuche.
Ich bekomme eine classCastException, genauer
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: jobaapp.JobaSmallestCircleCandidate cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:559)
at java.util.TreeSet.add(TreeSet.java:255)
at jobaapp.JobaSmallestCircle.computeSmallestCircle(JobaSmallestCircle.java:110)
Okay, ich habe drei Klassen und ging so vor: einmal habe ich die Klasse JobaSmallestCircle, da steckt die Collection drin, die viele Objekte vom Typ JobaSmallestCircleCandidate fasst. Für die Liste habe ich einen Comparator geschrieben und initialisiert, JobaSmallestCircleCandidateComparator. Jetzt gibt es eine Methode in der Klasse JobaSmallestCircle, die dann ein neues Element in die Liste aufnehmen soll und da wirft es mir diese Exception. Hier noch die Klassenausschnitte, ich dachte mein Vorgehen mit dem Comparator sollte so richtig sein, oder muessen die Klassen, die dann mit dem Comparator arbeiten auch irgend ein 'implements' stehen haben?
Klasse JobaSmallestCircle
Comparator-Klasse
JobaSmallestCircleCandidate-Klasse
Comparator und TreeSets sind für mich Neuland, daher hänge ich gerade etwas bei der Fehlersuche.
Ich bekomme eine classCastException, genauer
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: jobaapp.JobaSmallestCircleCandidate cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:559)
at java.util.TreeSet.add(TreeSet.java:255)
at jobaapp.JobaSmallestCircle.computeSmallestCircle(JobaSmallestCircle.java:110)
Okay, ich habe drei Klassen und ging so vor: einmal habe ich die Klasse JobaSmallestCircle, da steckt die Collection drin, die viele Objekte vom Typ JobaSmallestCircleCandidate fasst. Für die Liste habe ich einen Comparator geschrieben und initialisiert, JobaSmallestCircleCandidateComparator. Jetzt gibt es eine Methode in der Klasse JobaSmallestCircle, die dann ein neues Element in die Liste aufnehmen soll und da wirft es mir diese Exception. Hier noch die Klassenausschnitte, ich dachte mein Vorgehen mit dem Comparator sollte so richtig sein, oder muessen die Klassen, die dann mit dem Comparator arbeiten auch irgend ein 'implements' stehen haben?
Klasse JobaSmallestCircle
Java:
public class JobaSmallestCircle
{
ArrayList<Point> points;
TreeSet<JobaSmallestCircleCandidate> smallestCircleCandidates;
Point centerOfCircle;
int radius;
...........
JobaSmallestCircle()
{
// Dummykonstruktor
points = new ArrayList<Point>();
smallestCircleCandidates = new TreeSet<JobaSmallestCircleCandidate>();
................
if ( wasOuterPointInLoop == false )
{
ds += "------> ja wir haben ein Kandidatenpaar, siehe letzten for-D-Lauf;\n";
// hier hagelt es die Exception!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
smallestCircleCandidates.add(jscc);
}
Comparator-Klasse
Java:
public class JobaSmallestCircleCandidateComparator implements Comparator<JobaSmallestCircleCandidate>
{
@Override
public int compare( JobaSmallestCircleCandidate o1, JobaSmallestCircleCandidate o2 )
{
return o1.radius - o2.radius;
}
}
JobaSmallestCircleCandidate-Klasse
Java:
public class JobaSmallestCircleCandidate
{
// Startpunkt
Point startPoint;
Point endPoint;
// Mittelwert des Kreises
Point centerOfCircle;
// Radius
int radius;
double expRadius;
JobaSmallestCircleCandidate( Point a, Point b )
{
startPoint = a;
endPoint = b;
computeCircleNumbers();
}