我上课了
public class LocationDistances {
String locs;
double distances;
}
Run Code Online (Sandbox Code Playgroud)
和一个由另一个类中的LocationDistances对象组成的ArrayList
ArrayList<LocationDistances> locsDis = new ArrayList(Arrays.asList(
new LocatoinDistances("abc",23.234556),
new LocatoinDistances("xyz",3.3444566),
. . .
. . .
. . .
));
Run Code Online (Sandbox Code Playgroud)
如何根据locsDis arrayList中LocationDistances.distance的最小值从Array列表中选择LocationDistances.locs?
如果你使用的是Java 8(你应该:)):
locsDis.stream().min((first, second) -> Double.compare(first.distance, second.distance)).get();
Run Code Online (Sandbox Code Playgroud)
编辑:决定使这篇文章更全面,以帮助我们仍然局限Java < 8 但可以使用真棒库番石榴:)
Java 6&7使用guava(Google util库):
Ordering<LocationDistances> ordering = new Ordering<LocationDistances>() {
@Override
public int compare(LocationDistances left, LocationDistances right) {
return Double.compare(left.distance, right.distance);
}
};
return ordering.max(list);
Run Code Online (Sandbox Code Playgroud)
如果没有重复的距离,这样的东西就会起作用.
LocationDistances min=null;
for(LocationDistances x:locsDis){
min=(min==null||x.distances<min.distances)?x:min;
}
String minimumDistance=min.locs;
Run Code Online (Sandbox Code Playgroud)
如果有重复的距离使用这样的东西
ArrayList<LocationDistances> min=new ArrayList<LocationDistances>();
for(LocationDistances x:locsDis){
if(min.size()==0||x.distances==min.get(0).distances)
min.add(x);
else if(x.distances<min.get(0).distances){
min.clear();
min.add(x);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3990 次 |
| 最近记录: |