java – 如何从列表中检索所有最大值?

我有一个名为Employee的类,它实现了Comparable接口.

现在我的列表中有5个Employee对象,每个对象都有自己的salary属性.我想找到所有具有最高工资的Employee对象.

我可以使用单个对象

 Employee employee = Collections.max(employeeList);

但是这只返回一个Employee,而我正在尝试检索具有相同最大值的所有对象的数组或列表.我怎样才能做到这一点?

解决方法:

为了提高效率,您应该遍历列表并自己查找所有最大元素:

List<Employee> result = new ArrayList<>();
Employee currentMax = null;
for (Employee e : list) {
    if (currentMax == null || e.compareTo(currentMax) > 0) {
        currentMax = e;
        result.clear();
        result.add(e);
    }
    else if (currentMax!= null && e.compareTo(currentMax) == 0) {
        result.add(e);
    }
}

该解决方案是O(n),并且需要单次通过列表.

上一篇:java反射调用一个带有Comparable []参数的方法


下一篇:Java Comparable返回值,它必须是1,-1还是0?