Java中Collection Object中的最大值

时间:2014-03-30 04:29:24

标签: java spring hibernate

我需要从Class of List中检索最高值。但是,我一直在从ArrayList中检索数据时使用Collections.max(list),但是无法回想起是否有任何类可以从List of Class中执行相同操作。

我有一个班级:

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");

或在List上运行循环。

但我们可以使用任何收集方法来执行相同或任何其他替代方法吗?

2 个答案:

答案 0 :(得分: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());
  }
});

答案 1 :(得分:0)

正如pickypg所说,实施比较薪水的Compactor界面。然后调用Collection的max方法来获得最大薪水。简单。