2016-12-02 5 views
0

私はクラス 'ポイント'を持っています。私は点の配列を並べ替えるが、私は2つの "比較"関数を使用したい(私は2つの配列を取る、1つはXと他のYによってソートされたポイントで)したい。 クラスで2つの比較関数を受け入れる方法を教えてください。ここで、私のコードの代わりにComparatorを実装Pointを持つのポイントの配列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)で使用される 'compare'関数を実装する必要があることです。 – ivanciprian

答えて

3

だそれぞれxとyのコンペア2つのComparator定数を持っています。

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'は最初のargとして' Object [] 'をとります。 https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#sort-T:A-java.util.Comparator- –

+0

Arrays.sortではなくCollections.sortを指定しましたが、私の悪い。しかし、それはまだ動作しません。 – ivanciprian