aru*_*ect 3 java java-8 java-stream
我有一个列表Employee,我想只检索一个Employee具有特定名称的信息:
public static Employee getAllEmployeeDetails(String employeeName) {
List<Employee> empList = getAllEmployeeDetails();
Employee employee = empList.stream().filter(x -> x.equals(employeeName));
return employee;
}
Run Code Online (Sandbox Code Playgroud)
请让我知道如何过滤数据并返回单个元素.
这将找到与Employee给定名称匹配的第一个,或者null如果找不到:
Employee employee = empList.stream()
.filter(x -> x.getName().equals(employeeName))
.findFirst()
.orElse(null);
Run Code Online (Sandbox Code Playgroud)
你正在寻找findFirst或findAny:
empList.stream()
.filter(x -> x.getName().equals(employeeName))
.findFirst()
Run Code Online (Sandbox Code Playgroud)
要么
empList.stream()
.filter(x -> x.getName().equals(employeeName))
.findAny();
Run Code Online (Sandbox Code Playgroud)
但是,我建议更改方法返回类型,并将Optional其用作方法返回类型,其中需要表示"无结果".换句话说,我们让"客户"决定在"无价值"的情况下做什么.即
public static Optional<Employee> getAllEmployeeDetails(String employeeName) {
return empList.stream()
.filter(x -> x.getName().equals(employeeName))
.findFirst()
}
Run Code Online (Sandbox Code Playgroud)
你可以做到.findFirst().orElse(null)但处理nullity有时是危险的,这是利用Optional<T>API 的绝佳机会.
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |