Point2D.Float型のTreeSetを作成し、Point2D型のcompare()を実装するカスタムComparableクラスを使用して作成しています。ただし、TreeSetで「contains」を呼び出すと、クラスキャストエラーが発生します。java.lang.ClassCastException: java.awt.geom.Point2D$Float cannot be cast to java.lang.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;
}
}
何がうまくいかないかについてのアイデアはありますか?私はそれを無駄にデバッグしようとして何時間もここで立ち往生しています。ありがとう。