java 关于实现comparator接口

代码如下:importjava.util.Arrays;importjava.util.Comparator;classPoint{privateintx;private... 代码如下:
import java.util.Arrays;
import java.util.Comparator;

class Point
{
private int x;
private int y;

public Point(int _x, int _y)
{
x = _x;
y = _y;
}

public int getX() { return x; }
public int getY() { return y; }
public void print() { System.out.println("x = " + x + "\ty = " + y); }

public boolean equals(Object obj)
{
if (this == obj) return true;
if (!(obj instanceof Point)) return false;

Point temp = (Point)obj;
return (x == temp.x && y == temp.y);
}
}

class PointComparator implements Comparator<Point>
{
public int compare(Point p1, Point p2)
{
if (p1.equals(p2)) return 0;
else if (p1.getX() > p2.getX()) return 1;
else if (p1.getX() < p2.getX()) return -1;
else return p1.getY() > p2.getY() ? 1 : -1;
}
}

public class Test
{
public static void main(String[] args)
{
Point[] ps = { new Point(8, 9), new Point(2, 7),
new Point(6, 5), new Point(6, 3)
};

Arrays.sort(ps, new PointComparator());
for (Point p : ps)
p.print();
}
}

代码没有错,有点不明白: 不是一个类如果实现一个接口,就得重写这个接口的全部方法吗?Comparator接口里有两个方法,一个是compare,另一个是equals,但在上面这个PointComparetor类里并没有重写equals方法,虽然Point类重写了这个方法,但这根本就是两个不同的类嘛,请高手指教,谢谢!
展开
 我来答
puziguo
2016-10-07 · TA获得超过1928个赞
知道小有建树答主
回答量:884
采纳率:86%
帮助的人:807万
展开全部
首先一点你写的所有java类都是默认继承Object这个类的, 而Object这个类里面实现一个默认的equals方法,所以你的PointComparator 类是有equal方法的

你要是不信呢,可以随便写个类,都可以调用equals方法, 虽然默认比较的是2个对象的引用地址
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式