使用多个 if 和 for 块的 Java 7 代码重构为 java 8

问题描述 投票:0回答:1

任何人都可以使用流将下面的代码片段转换为 java 8:

private String findEmp(String nameOrIdToCompare){
           for (Employee emp: empArray){
            if(emp.getAge() > 60){
                //some code
            }
            if (nameOrIdToCompare.equalsIgnoreCase(emp.getID())){
                              //some code
                return titleOrIdToCompare;
            }
            else if(emp.getName().equalsIgnoreCase(nameOrIdToCompare)){
                                //some code
                return titleOrIdToCompare;
            }
        }
           return null;
     }

我试图使用 java 8 功能转换上面的代码。

foreach java-8 stream
1个回答
0
投票
Employee[] empArray //array

String nameToCompare 
//use empArray.stream().forEach - if streaming list

Optional<String> result = Arrays.stream(empArray)
.filter(e -> e.getAge() > 60)
.map(e -> {
//add logic - below line increments age by 1
    e.setAge(e.getAge() + 1);
    return e;
})
.filter(e -> nameToCompare.equals(e.getName()) ||  nameToCompare.equals(e.getId()))
.findFirst()
//add the return logic - below returns name of the e
.map(Employee::getName);

if (result.isPresent()) {
System.out.println(result.get());
 } else {}
© www.soinside.com 2019 - 2024. All rights reserved.