我需要从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上运行循环。
但我们可以使用任何收集方法来执行相同或任何其他替代方法吗?
答案 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方法来获得最大薪水。简单。