2014-03-30 29 views
0

我需要從Class List中檢索最高值。然而,我從ArrayList中檢索數據時一直在使用Collections.max(list),但無法回想是否有任何類可以從Class List中做同樣的事情。Java中Collection對象的最大值

我有一個類:

public Class Emp{ 
    private Integer empno; 
    private String empName; 
    private Float salary; 
} 

使用Spring - Hibernate的,我在List<Emp>檢索整個表。

DAO代碼是:

public List<Emp> retriveAllEmp(){ 
return getSession().createQuery("from Emp"); 
} 

注意:在實際應用中,數據是使用複雜的查詢插入的Emp類和後顯示給客戶機。

要求是獲得工資的最大值。

然而,這可以通過查詢或標準的Emp對象做過類似

Float maxSalary = getSession().createQuery("select max(salary) from Emp"); 

或通過運行在列表中循環。

但我們可以使用任何收集方法來做相同或任何其他替代方法嗎?

+0

['Collections.max(收藏科爾,比較 COMP)'](http://docs.oracle.com/javase/7/docs /api/java/util/Collections.html#max(java.util.Collection,%20java.util.Comparator))需要一個'Collection',這意味着它也可以接受一個'List'和一個'Comparator'讓你找到「最大」。 ['Collections.max(Collection coll)'](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection))需要一個「集合」,其元素是「可比」,因此它們自己定義「最大」。因此你可以使用任一個。 – pickypg

回答

2

這不是很清楚你問什麼,但我想你想說:

我之前一個List<Float>使用Collections.max(Collection<T>),但我不知道怎麼弄的最大來自像我的Emp類的自定義對象。

假設我正確地解釋你的問題,答案是使用其他max()方法,Collections.max(Collection<T>, Comparator<T>)。除了要搜索的集合之外,此方法還需要Comparator,以便您可以爲您的Emp對象提供明確的排序。

的代碼會是這個樣子:

List<Emp> results = ...; 
Emp max = Collections.max(results, new Comparator<Emp>() { 
    int compare(Emp a, Emp b) { 
    return Float.compare(a.getSalary(), b.getSalary()); 
    } 
}); 
0

由於pickypg表示,實現比較工資的Compactor界面。然後調用Collection的最大方法來獲得最高工資。簡單。