我有一个班级Gym
,其中包含以下字段:
private int id;
private String name;
private String street;
private String housenumber;
private String zipcode;
private String lat;
private String lng;
private String city;
所有数据都在数据库中。用户可以通过一些creteria过滤健身房:运动和距离。我有一个函数可以将所有的健身房从数据库中取出并将它们添加到布局中。
lat
和lng
字段也在数据库中。
当用户请求所有健身房时,使用以下代码计算用户与位置之间的距离:
double distance = Math.round(gpsHelper.calculateDistance(location.getLatitude(), Double.valueOf(gym.getLat()),
location.getLongitude(), Double.valueOf(gym.getLng()), 0.0, 0.0));
DecimalFormat df = new DecimalFormat("#.##");
String formattedDistance = "Afstand: " + String.valueOf(df.format(distance)) + " km";
我想做的是:我想按照他们与用户的距离对所有健身房进行排序。所以按df.format(distance)
排序。
有人能帮我推进正确的方向吗?我想我已经添加了相关的代码。
答案 0 :(得分:3)
Collections.sort(List<T> list)
根据元素的自然顺序将指定列表按升序排序。
例如:
List<String> fruits = new ArrayList<String>();
fruits.add("Pineapple");
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Banana");
Collections.sort(fruits);
int i=0;
for(String temp: fruits){
System.out.println("fruits " + ++i + " : " + temp);
}
将作为输出:
fruits 1 : Apple
fruits 2 : Banana
fruits 3 : Orange
fruits 4 : Pineapple
请参阅:Java object sorting example (Comparable and Comparator)。
中的其他示例 Comparator
是一个比较函数,它对某些对象集合强加了一个总排序。比较器可以传递给排序方法(例如Collections.sort
或Arrays.sort
),以便精确控制排序顺序。
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getLastName().compareTo(o2.getLastName());
}
});
Java 8引入了Lambda Expressions,Comparator
的等价物是:
Comparator<Person> people =
(Person o1, Person o2)->o1.getLastName().compareTo(o2.getLastName());