gpt4 book ai didi

java - 如何根据给定条件使用 Comparator.comparing() 对类进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 02:20:29 25 4
gpt4 key购买 nike

我得到了以下不是可编译代码的类。我想将条件作为参数发送以对员工数组进行排序。如何使用 Java 8 函数式风格的 Comparator.comparing() 来做到这一点?比如我想按名字或者按年龄等排序。

public class Employee {
String name;
int age;
double salary;
long mobile;
}


public class EmpolyeeSorter {
Employee[] employees = new Employee[]{
new Employee("John", 25, 3000.0, 9922001),
new Employee("Ace", 22, 2000.0, 5924001),
new Employee("Keith", 35, 4000.0, 3924401)};


public static void sortEmpoyeeByCriteria(Function<? super T, ? extends U> byCriteria) {
Comparator<Employee> employeeComparator
= Comparator.comparing(byCriteria);

}
}

最佳答案

您缺少一些方法的定义:

public static <T, U extends Comparable<? super U>> void sortEmpoyeeByCriteria(Function<? super T, ? extends U> byCriteria) {
Comparator<T> c = Comparator.comparing(byCriteria);
}

在这种情况下,您还应该将 List 传递给要排序的方法。

但是为什么不在这种情况下使用 Collections.sort 并在表单中传递 ListComparator(例如):

Collections.sort(yourList, Comparator.comparing(Employee::getXXX))

编辑你可以这样声明:

public static <T, U extends Comparable<? super U>> void sortEmpoyeeByCriteria(
List<T> list,
Function<? super T, ? extends U> byCriteria) {
Comparator<? super T> c = Comparator.comparing(byCriteria);
list.sort(c);
}

关于java - 如何根据给定条件使用 Comparator.comparing() 对类进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46038957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com