我写了以下代码:

public class NewClass2 implements Comparator<Point>
{
    public int compare(Point p1, Point p2)
    {
        return (int)(p1.getY() - p2.getY());
    }
}


如果我说有两个双精度数字3.2 - 3.1,则差应为0.1。但是,当我将数字转换为int时,差异最终以0结束,这是不正确的。

因此,我需要compare()返回一个double而不是一个int。问题是,我的getX字段是双精度型。我怎么解决这个问题?

最佳答案

您无需返回double

Comparator接口用于为要比较的元素建立排序。具有使用double的字段与此顺序无关。

您的代码很好。

抱歉,我错了,再次阅读问题,这是您需要的:

public class NewClass2 implements Comparator<Point> {
    public int compare(Point p1, Point p2) {
        if (p1.getY() < p2.getY()) return -1;
        if (p1.getY() > p2.getY()) return 1;
        return 0;
    }
}

09-28 13:14