java8流式编程实例(包含返回列表和实例)

Java 8在对集合的处理引入了stream的概念,任何集合类都可以转换成stream,然后应用java 8提供的内置函数(比如filter,match,map等)来实现我们的业务逻辑。

根据id,查询list里面的employee

源码:

public Employee getEmployee(Integer employeeId){
    for(Employee employee:employeeList){
        if(employee.getId().equals(employeeId)){
            return employee;
        }
    }
    return null;
}

修改后:

 public Employee getEmployee(final Integer employeeId){
    return employeeList.stream()
            .filter(employee -> employee.getId().equals(employeeId))
            .findFirst()
            .get();
}

查询list中是否包涵id=10的员工

源码:

public boolean isExist(Integer employeeId){
    for(Employee employee:employeeList){
        if(employee.getId().equals(employeeId)){
            return true;
        }
    }
    return false;
}

修改后:

public boolean isExist1(Integer employeeId){
    return employeeList.stream().
            anyMatch(employee -> employee.getId().equals(employeeId));
}

查询list中id>100的所有员工

源码:

public List<Employee> getEmployees(){
    List<Employee> employees = new ArrayList<>();
    for(Employee employee:employeeList){
        if(employee.getId()>100){
            employees.add(employee);
        }
    }
    return employees;
}

修改后:

public List<Employee> getEmployees(){
    return employeeList.stream()
            .filter(employee -> employee.getId()>100)
            .collect(Collectors.toList());
}

查询list中所有人的名字

源码:

public List getAllNames() {
    List<String> names = new ArrayList<>();
    for (Employee employee : employeeList) {
        names.add(employee.getName());
    }
    return names;
 }

修改后

public List<String> getAllNames() {
    return employeeList.stream()
                  .map(employee -> employee.getName())
                  .collect(Collectors.toList());
}