import java.util.TreeSet;Kompilierung und Ausführung gibt folgendes Ergebnis zurück:
class Punkt {
int x,y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
public class ImpComparableWrong {
public static void main(String[] args) {
TreeSetd = new TreeSet ();
d.add(neuer Punkt(2,4));
d.add(neuer Punkt(1,7));
d.add(neuer Punkt(5,3));
System.out.println(d.size());
}
}
Ausnahme im Thread "main" java.lang.ClassCastException: TreeSet.Point kann nicht in java.lang.ComparableDer Grund dafür ist, dass die Point-Klasse die Schnittstelle implementieren muss Comparable damit das TreeSet Point-Objekte aufnehmen kann. Das hinzugefügte Objekt kann nicht mit den Elementen in TreeSet verglichen werden, die Methode add() löst eine Ausnahme aus ClassCastException. Um ein Objekt vergleichbar zu machen, müssen Sie die Comparable.
bei java.util.TreeMap.compare(Unbekannte Quelle)
bei java.util.TreeMap.put(Unbekannte Quelle)
bei java.util.TreeSet.add(Unbekannte Quelle)
bei TreeSet.Comparable.main(Comparable.java:17)
import java.util.Iterator;Dieses Programm gibt folgendes Ergebnis aus:
import java.util.TreeSet;
class Point implementiert Comparable{
int x,y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public int compareTo(Point p) {
double dp2 = (double) Math.sqrt(Math.pow(p.x,2) + Math.pow(p.y,2));
double dp = (doppelt) Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
if(dp > dp2)
return 1;
else
return 0;
}
}
public class Comparabletest {
public static void main(String[] args) {
TreeSettset = new TreeSet ();
tset.add(neuer Punkt(2,4));
tset.add(neuer Punkt(1,7));
Punkt a = neuer Punkt(2,5);
Iteratoriterator = tset.iterator();
while(iterator.hasNext()){
Punkt p = iterator.next();
System.out.print(p.x +", "+ p.y);
System.out.println(" | p > a: "+p.compareTo(a));
}
}
}
2, 4 | p > A: 0References:
1, 7 | p > a: 1
Please disable your ad blocker and refresh the window to use this website.