我有一个结果列表,ArrayList<PlacedObject> result
:
for(PlacedObject po : result){
float[] results = new float[3];
Location.distanceBetween(lastlocation.getLatitude()
,lastlocation.getLongitude()
,Double.parseDouble(po.lat)
,Double.parseDouble(po.lng) ,
results);
po.distance = results[0];
}
设置po.distance
后,我想按distance
属性对列表进行排序。在c#中我会使用linq,但在java中有没有类似的解决方案?
由于
目前的解决方案:
Collections.sort(result, new Comparator<PlacedObject>(){
public int compare(PlacedObject s1, PlacedObject s2) {
return (int) (s1.distance - s2.distance);
}
});
答案 0 :(得分:3)
这是通过实施Comparator<T>
类来实现的:
比较函数,它对某些对象集合施加总排序。可以将比较器传递给排序方法(例如Collections.sort或Arrays.sort),以便精确控制排序顺序。
可以使用Collections.sort(list, comparator)将其应用于您的列表。基本上,您实现自己的Comparator并将其传递给方法。
实现可以使用匿名内部类:
Collections.sort(list, new Comparator<PlacedObject>() {
@Override
public int compare(PlacedObject po1, PlacedObject po2) {
return Double.valueOf(po1.distance).compareTo(po2.distance);
}
});
如果您只是最大限度地发挥作用,正如标题所示,还会以相同的方式应用Collections.max。