2017-03-31 94 views
0

我有一個類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; 

所有的數據是在數據庫中。用戶可以通過一些標準來過濾健身房:運動和距離。我有一個函數可以將所有gyms從數據庫中取出並添加到佈局中。

latlng字段也在數據庫中。

當用戶請求的所有使用下面的代碼計算用戶和位置之間的距離體育館:

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)排序。

任何人都可以推動我走向正確的方向嗎?我想我已經添加了相關的代碼。

+1

可以簡化您的例子可能是?像更小,容易驗證的東西? – Eugene

+0

如果你有一個健身房列表(列表,那麼你應該在Gym類中重寫compareTo)(也就是說,你的健身房類應該實現Comparable界面) –

+0

「按每個不均勻指數對它進行排序」 - 謹慎解釋那是什麼基本上,如果你有一個'List list',你可以通過Collections.sort(list,someComparator)對其進行排序,其中'someComparator'是'Comparator '的一個實現(你也可以使'健身房「執行」可比較「,但這隻允許你按照一個確切的順序進行排序,例如名字或距離。如果你需要它們中的任何一個,或者你需要一個比較器) – Thomas

回答

4

Collections.sort

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.sortArrays.sort),以便精確控制排序順序。

Collections.sort(people, new Comparator<Person>() { 

    @Override 
    public int compare(Person o1, Person o2) { 
     return o1.getLastName().compareTo(o2.getLastName()); 
    } 
}); 

Lambda表達式

的Java 8引入Lambda ExpressionsComparator的等價物是:

Comparator<Person> people = 
    (Person o1, Person o2)->o1.getLastName().compareTo(o2.getLastName()); 
相關問題