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