2016-12-02 49 views
0

我有一個'Point'類。我想排序一個點的數組,但我想使用2個「比較」函數(我想要2個數組,其中一個點的排序是X,另一個是Y)。 如何讓我的課程接受2個比較函數?這裏是我的代碼用Java排序的點數陣列

static class Point implements Comparator<Point>{ 
    int x,y; 
    int compareX(Point A , Point B){ 
     return A.x - B.x; 
    } 
    int compareY(Point A , Point B){ 
     return A.y - B.y; 
    } 
} 
+0

你沒有2個比較函數嗎? – XtremeBaumer

+0

問題是我需要實現將在Arrays.sort(myArray)中使用的「比較」函數 – ivanciprian

回答

3

而不必Point實施Comparator的,有2個Comparator常數,它由X和Y分別進行比較。

static class Point { 
    public static final Comparator<Point> X_COMPARATOR = Comparator.comparingInt(Point::getX); 

    public static final Comparator<Point> Y_COMPARATOR = Comparator.comparingInt(Point::getY); 
} 
+0

我不太確定該如何使用此比較器。這不起作用: \t \t 公共點sortByX(){ \t \t \t回Arrays.sort(這一點,X_COMPARATOR); \t \t} – ivanciprian

+0

@epanicafrate'Point'不是一個數組。 'Arrays.sort'將'Object []'作爲第一個參數。 https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#sort-T:A-java.util.Comparator- –

+0

我的意思是Collections.sort,而不是Arrays.sort,我的錯。但它仍然不起作用。 – ivanciprian