//为什么这么用e -> e.getSalary() > 7000? System.out::println?
employees.stream().filter(e -> e.getSalary() > 7000).forEach(System.out::println);
@Test
public void test() {
List<Employee> employees = Dates.getEmployees();
// filter(Predicate p)——接收 Lambda , 从流中排除某些元素。
//为什么这么用e -> e.getSalary() > 7000? System.out::println?
employees.stream().filter(e -> e.getSalary() > 7000).forEach(System.out::println);
System.out.println("******");
//问题1, e -> e.getSalary() > 7000 解析
Predicate<Employee> obj = new Predicate<Employee>() {
@Override
public boolean test(Employee e) {
if (e.getSalary() > 7000){
return true;
}
return false;
}
};
Stream<Employee> stream = employees.stream();
Predicate<Employee> obj1 = e -> e.getSalary() > 7000;
Stream<Employee> em = stream.filter(obj1);
// Employee[] ee =(Employee[]) em.toArray();
// for (Employee e : ee) {
// System.out.println(e);
// }
// 问题2 System.out::println 解析
//Consumer中的void accept(T t) 可以引用PrintStream中的void println(T t)。固可以写成forEach(System.out::println);
Consumer<Employee> ob = new Consumer<Employee>() {
@Override
public void accept(Employee employee) {
System.out.println(employee);
}
};
//解决问题2
em.forEach(ob); //em.forEach(System.out::println)
//下面是造的数据
package com.lambda.stream;
import java.util.ArrayList;
import java.util.List;
/**
* @author
* @create 2022-02-21 21:30
*/
public class Dates {
public static List<Employee> getEmployees() {
List<Employee> list = new ArrayList<>();
list.add(new Employee(1001, "马化腾", 34, 6000.38));
list.add(new Employee(1002, "马云", 12, 9876.12));
list.add(new Employee(1003, "刘强东", 33, 3000.82));
list.add(new Employee(1004, "雷军", 26, 7657.37));
list.add(new Employee(1005, "李彦宏", 65, 5555.32));
list.add(new Employee(1006, "比尔盖茨", 42, 9500.43));
list.add(new Employee(1007, "任正非", 26, 4333.32));
list.add(new Employee(1008, "扎克伯格", 35, 2500.32));
return list;
}
}
package com.lambda.stream;
import java.util.Objects;
/**
*Employee 雇员
*/
public class Employee {
private int id;
private String name;
private int age;
private double salary; //工资
public Employee(){
}
public Employee(int id) {
this.id = id;
}
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public Employee(int id, String name, int age, double salary) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return id == employee.id && age == employee.age && Double.compare(employee.salary, salary) == 0 && Objects.equals(name, employee.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age, salary);
}
protected String getDetails() {
return id + "\t" + name + "\t" + age+ "\t" +salary;
}
@Override
public String toString() {
return getDetails();
}
}