基本上他在问:- 如何在 Comparator java 8 中使用 lambda 表达式。
这里是完整的例子:-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class EmpCompare2 {
public static void main(String[] args) {
List<Employee> companyTeam = new ArrayList<>();
Employee empComparator1 = new Employee("Vipul", 25, 20000);
Employee empComparator2 = new Employee("Amol", 21, 30000);
Employee empComparator3 = new Employee("Sandeep", 22, 40000);
Employee empComparator4 = new Employee("Sagar", 23, 60000);
Employee empComparator5 = new Employee("kamal", 24, 6000);
Employee empComparator6 = new Employee("Zandu", 20, 5000);
companyTeam.add(empComparator1);
companyTeam.add(empComparator2);
companyTeam.add(empComparator3);
companyTeam.add(empComparator4);
companyTeam.add(empComparator5);
companyTeam.add(empComparator6);
// sort by age
Collections.sort(companyTeam, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o1.getAge() - o2.getAge();
}
});
// lambda
companyTeam.sort((Employee o1, Employee o2) -> o1.getAge() - (o2.getAge()));
// lambda
companyTeam.sort((o1, o2) -> o1.getAge() - (o2.getAge()));
System.out.println("After Sorting BY Age: companyTeam " + companyTeam);
// sort by salary
Collections.sort(companyTeam, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o1.getName().compareTo(o2.getName());
}
});
// lambda
companyTeam.sort((Employee o1, Employee o2) -> o1.getName().compareTo(o2.getName()));
// lambda
companyTeam.sort((o1, o2) -> o1.getName().compareTo(o2.getName()));
System.out.println("After Sorting : companyTeam " + companyTeam);
}
}
或者您可以在下面的 java 8 环境中使用下面的代码。
我们可以有3个布尔ageFlag = false;,布尔nameFlag = true;,布尔salaryFlag = false;,就像下面的标志值我们可以从UL点击
import java.util.Comparator;
public class EmpDataCompare implements Comparator<Employee> {
boolean ageFlag = false;
boolean nameFlag = true;
boolean salaryFlag = false;
public int compare(Employee emp1, Employee emp2) {
if (ageFlag) {
return (emp1.getAge() - emp2.getAge());
}
if (nameFlag) {
int nameComp = emp1.getName().compareTo(emp2.getName());
return ((nameComp == 0) ? emp1.getName().compareTo(emp2.getName()) : nameComp);
}
if (salaryFlag) {
return (emp1.getSalary() - emp2.getSalary());
}
return (emp1.getAge() - emp2.getAge());// return by default compare value by age
}
}
但我想建议我们应该有单独的 Comparator 类实现,以使用 Employee 的姓名、年龄、薪水属性根据 Java 中的关注点分离规则对员工进行排序 [https://en.wikipedia.org/wiki/Separation_of_concerns] 或使用 Java 8 样式代码