【发布时间】:2021-06-11 18:34:05
【问题描述】:
功能界面
import java.util.ArrayList;
public interface EmployeeAudit {
public ArrayList<String> fetchEmployeeDetails (double salary);
}
在公共类 Main
public static EmployeeAudit findEmployee(){
ArrayList<String> name=new ArrayList<>();
return (sal) -> {
employeeMap.forEach((key,value) -> {
if(value<=sal)
name.add(key);
});
return name;
};
}
在主函数中:
ArrayList<String> str = findEmployee().fetchEmployeeDetails(sal);
谁能帮我理解 sal 的值是如何转移到 findEmployee() 的,因为 findEmployee() 根据链接首先被调用。以及这些调用的工作原理。
【问题讨论】:
-
如果您将 lambda 表达式替换为实现
EmployeeAudit的匿名类,您能回答您自己的问题吗? -
始终避免在 lambda 中改变外部引用。更好的版本是:
EmployeeAudit aud = sal -> employeeMap.entrySet().stream().filter(e -> sal >= e.getValue()).map(Entry::getKey).collect(Collectors.toList());
标签: java lambda java-stream