[英]ClassCastException while sorting an array using Comparator
我喜歡這個類來比較Y坐標(降序),並且我有預定義的Point類。
在主類中,我要發送Compare 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;
}
}
Arrays.sort(Object [] a)方法需要一個實現Comparable
的類型。 如果您正在創建數組CompareY
對象,你要注意, CompareY
沒有實現Comparabe
,因此,你會得到一個ClassCastException
運行時,因為CompareY
不能轉換為Comparable
。 同樣,如果要創建Point
對象的array
, ClassCastException
由於Points
不實現Comparable
,因此仍然會收到ClassCastException
解決此問題:
Point
對象array
。 Comparator
的Arrays.sort方法。 范例:
Point[] points = new Point[]{new Point(..),new Point(...)};
Arrays.sort(points,new CompareY());
或者,您可以讓Point
類實現Comparable
並定義Points
的自然順序。 然后,您可以直接使用Array.sort(Object[] a)
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.