2017-05-07 12 views
0

私は、それぞれがプロパティの緯度と経度を持つ点のリストを持っています。どの点を特定の点に最も近い点のリストにソートする必要がありますか。 解決策の1つはfor()ループを使用してリストを調べ、各点を指定された点(指定された現在の位置)と比較します。 私はアンドロイドでRxJava2を使用しています。私は、ソリューションを実現する方法ではないことをコンパイラで動作するメソッドtoSortedList()を見ています。 compareTo()メソッドを使用する方法はありますか?特定のポイント(緯度と経度)に最も近いポイントのリストをソートする方法は?

.map(new Function<List<Point>, List<Point>>() { 
       @Override 
       public List<StoreModel> apply(List<Point> storeModels) throws Exception { 
//...sort list 
return storeModels; 
       } 
      }) 
+0

コンパレータは、リストをソートするための標準的な方法です。 –

+0

あなたはこのクラスの完全なコードを共有する必要があります。緯度と経度をソートする方法はたくさんありますが、 –

+0

@Gabe Sechanですが、Comparatorを使用するとリストのペアを比較してソートすることができます。緯度と経度の値がリストに含まれていないので、私は好きではないループについて考えるのです。 –

答えて

0

@Gabe Sechanが言及としては、ComparatorComparatorがちょうどそれらの間の定量的な比較何2つのアイテムを与えることについて知っておく必要があるとして、標準的な方法は、あなたが、本当に重要ではありません外部値、と比較することができますです。

somePointsObservable.toSortedList((p1, p2) -> 
        calculateDistance(givenPoint, p1) - calculateDistance(givenPoint, p2)); 

calculateDistanceは、2点間の距離を計算し、 givenPointはあなたが状況と比較されている現在の指定された場所である:
そうtoSortedList()Comparatorと、それはこのようなものになることができます。

関連する問題