2015-12-15 81 views
0

我有一個小問題,我希望你能幫我解決它。Java:我如何排序對象列表?

我有一個叫做實體類,它有幾個屬性,其中的兩個屬性是ID實用

public class Entity implements Comparable <Entity> { 

    int id; 
    int utility; 

} 

然後,我有幾個實體對象一個ArrayList裏面,像這樣:

ArrayList<Entity> sorted_entities = new ArrayList<Entity> 
//added entities 

現在,我想對基於UTILITY實體的列表進行排序。我試了soluctions像這樣的,我讀到這裏,使用自定義比較:

Collections.sort(sorted_entities, new Comparator<Entity>() { 

public int compare(Entity a, Entity b) { 
    return a.utility.compareTo(b.utility); 
} 

}); 

但在這條線:

return a.utility.compareTo(b.utility); 

我遇到了以下錯誤:INT無法提領我不知道如何解決它。你們能幫我解決這個問題嗎?或者給出另一種解決方案?謝謝。

+0

對不起,我發現了幾個主題,但我沒有看到比較問題。 – Removed

+0

我真的好奇你爲什麼創建一個'Comparator',當你的'Entity'已經實現'Comparable'時。 – Tom

回答

1

你必須使用包裝類型:

return Integer.valueOf(a.utility).compareTo(Integer.valueOf(b.utility)); 

實際上,你可以省略b.utility明確皈依Integer,因爲它總要被autoboxed。

或者(甚至更好),你也可以這樣做:

return Integer.compare(a.utility, b.utility); 

在沒有拳擊將參與其中。

+0

謝謝你,我用你的第二個代碼,錯誤消失了。但另一個小問題是:Collections.sort(blabla,我貼出來的代碼,修改後的c)沒有排序我的列表,它什麼也不做。我必須打個電話才能訂購清單?對不起,白癡問題 – Removed

+0

用適當的參數調用'Collections.sort()'應該對你的列表進行排序。不需要額外的工作。嘗試在排序和/或調試之後打印列表。 –

+0

沒事,問題解決了,幫助太大了!謝謝kocko! ^^ – Removed