简介:
声明式函数式接口,可以当参数进行传递
实体类
private String name; private Integer age; private double salary; private Status status; public enum Status{ FREE, BUSY, VOCATION; } public Employee(String name, Integer age, double salary, Status status) { this.name = name; this.age = age; this.salary = salary; this.status = status; } @Override public String toString() { return "Employee{" + "name='" + name + '\'' + ", age=" + age + ", salary=" + salary + ", status=" + status + '}'; }
初始化数据:员工初始化数据
new Employee("B张三",18,9999.9999, Employee.Status.FREE), new Employee("A李四",18,5555.9999, Employee.Status.FREE), new Employee("王五",30,4444.9999, Employee.Status.BUSY), new Employee("赵六",40,3333.9999, Employee.Status.VOCATION)
测试类://对员工排序,年龄相同的,按姓名排序
@Test public void test2(){ List<Employee> collect = emps.stream().sorted((x, y) -> { if (x.getAge() == y.getAge()) { return x.getName().compareTo(y.getName()); } else { return Integer.compare(x.getAge(), y.getAge()); //-x(倒序) } }).collect(Collectors.toList()); System.out.println(collect);
// List<Employee> collect = emps.stream().sorted((x, y) -> // x.getAge() == y.getAge() ? x.getName().compareTo(y.getName()) // : Integer.compare(x.getAge(), y.getAge())) // .collect(Collectors.toList());
}
测试类:将员工的年龄遍历出来
@Test public void test2(){ List<Integer> collect = emps.stream() .map(x -> x.getAge()).collect(Collectors.toList()); }