解析纬度/纬度的arraylist以获得最西部的纬度

时间:2014-10-06 07:52:03

标签: java arraylist

我有一个名为Coordinate的类,它包含两个属性 - 纬度和经度。我将它添加到ArrayList。现在我想获得这个ArrayList的最西部坐标。我想要一个有效的算法(因为我有6000个)坐标类。

3 个答案:

答案 0 :(得分:6)

在Java 8中,您可以使用功能样式:

Collections.sort(coordinateList, (c1, c2) -> c1.getLon().compareTo(c2.getLon()));

答案 1 :(得分:2)

如果你只想获得西方最多,那么就没有理由对列表进行排序。

Coord mostWest = Coord.newAtMaximumEast();
for(Coord coord : listOfCoordinates)
   if(coord.isFurtherWest(mostWest))
     mostWest = coord;

可读性较低的版本可能是:

Coord mostWest = null;
for(Coord coord : listOfCoordinates)
   if(mostWest == null || coord.getLong() < mostWest.getLong())
     mostWest = coord;

这是O( n )的复杂性,所有排序算法都更复杂,效率最高的仍然是O( n log n )。

答案 2 :(得分:1)

定义自定义比较器并使用Collections.sort