1
我正在创建Point2D.Float类型的TreeSet,并使用实现Point2D类型的compare()的自定义Comparable类来创建它。然而,在通话中 “包含” 在TreeSet中,我得到一个classcast错误:java.lang.ClassCastException: java.awt.geom.Point2D$Float cannot be cast to java.lang.Comparable
Java Point2D和Comparable
集创建为这样:
private CoordinateComparator coordCompare;
public TreeSet<Point2D.Float> coordSet = new TreeSet<Point2D.Float>(coordCompare);
这是我比较类:
public class CoordinateComparator implements Comparator<Point2D.Float> {
public CoordinateComparator() {}
@Override
public int compare(Point2D.Float p1, Point2D.Float p2) {
if (p1.getX() < p2.getX())
return -1;
if (p1.getX() > p2.getX())
return 1;
if (p1.getY() < p2.getY())
return -1;
if (p1.getY() > p2.getY())
return 1;
return 0;
}
}
任何有什么问题的想法?我一直在这里呆了几个小时,试图调试它无济于事。谢谢。
在将它传递给TreeSet之前,您正在初始化您的CoordinateComparator?像这样:coordCompare = new CoordinateComparator(); – 2010-09-11 18:28:43
哦,我的上帝。我是一个白痴。非常感谢! – Dan 2010-09-11 18:35:34
@John:以此作为答案;丹可以接受它。 – trashgod 2010-09-11 19:55:49