我喜欢这个班来比较Y Cordinates(降序) 我有预定义的Point类。
在主类中,我发送的是比较Y数组,它保留了点数(类型=点数)Arrays.sort(array);
,它给了我ClassCastExeption
,
如何解决这个问题。
public class CompareY implements Comparator<Point> {
public CompareY(){
}
@Override
public int compare(Point a1, Point a2) {
if (a1.y > a2.y)
return -1;
else if (a1.y < a2.y)
return 1;
else {
if (a1.x < a2.x)
return 1;
else if (a1.x > a2.x)
return -1;
else
return 0;
}
}
答案 0 :(得分:3)
Arrays.sort(Object[] a)方法需要一种实现Comparable
的类型。如果要创建CompareY
个对象数组,则应注意CompareY
未实现Comparabe
,因此,自ClassCastException
以来,您在运行时获得CompareY
无法转换为Comparable
。同样,如果您要创建array
Point
个ClassCastException
个对象,由于Points
未实现Comparable
array
解决问题:
Point
个Comparator
个对象。Point[] points = new Point[]{new Point(..),new Point(...)};
Arrays.sort(points,new CompareY());
的{{3}}方法。 示例:
Point
或者,您可以拥有Comparable
类工具Points
并定义Array.sort(Object[] a)
的自然顺序。然后,您可以直接使用.meta
方法。