我写了以下代码:
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;
}
}
关于java - 双比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59094219/