2017-05-07 166 views
0

我有點列表,其中他們每個人都有屬性經度和緯度,我如何需要排序點最接近給定點列表。 其中一個解決方案使用for()循環遍歷列表,並將每個點與給定點(給定當前位置)進行比較。 我在android中使用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提,Comparator是標準的方式,你可以把它比作一個外部價值,這其實並不重要,因爲Comparator只需要知道關於給2項什麼是它們之間的定量比較。
所以toSortedList()Comparator它可以是這樣的:

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

其中calculateDistance計算2點之間的距離,並且 givenPoint是您比較針對當前給定位置。

相關問題