2017-05-07 151 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是您比较针对当前给定位置。

相关问题