2017-08-04 17 views
2

私は何らかの並べ替え操作をしています。私が使っているデータ構造はList<Point>です。リストを効率的に並べ替える方法<Point> X値で

このポイントには、2つの値xyがあり、値はソートされていません。

私はこの値をxの値に応じて効率的にソートする必要があります。xを大きくするかxを小さくするかです。

1つの解決策は、各値を解析し、その値を他のすべての値と比較して各反復で最小のものを見つけることは非効率的なアプローチになることがあります。

他にどのような解決方法がこの問題に使用できますか。

編集:ポイントはorg.opencv.coreパッケージからです。

+0

理由を書きません'Pointクラス'を呼び出し、 'equals()/ hashcode()'をオーバーライドし、他の演算子はソートを適用します。あるいは、 'Map'クラスを利用することもできます。 –

+0

@SatishPatel y値もxにつけてください。 – arqam

+0

... [ソートアルゴリズム](https://en.wikipedia.org/wiki/Sorting_algorithm)について質問していますか? – Pelocho

答えて

6

あなたはクラス、 のように、getX()メソッドを持っているとします。あなたはxでポイントをソートすることができたJava 8の使用

:ジャワの下のバージョンでは

List<Point> points = ...; 
points.sort(Comparator.comparing(Point::getX)); 

、など7として、あなたはこれを達成するためにComparatorを実装できます。

List<Point> points = ...; 
Collections.sort(points, new Comparator<Point>() { 
    @Override 
    public int compare(Point p1, Point p2) { 
     return Double.compare(p1.getX(), p2.getX()); 
    } 
}); 
+0

これは良い答えです。多くの人がこれを手助けします。しかし残念なことに私の場合は 'org.opencv.Core' – arqam

+2

@arqamですが、' points.sort(Comparator.comparing(point - > point.x)); '代わりに' lambda'式を使うべきですメソッド参照の。 –

+0

あなたは素晴らしいです!!!! – arqam

関連する問題