因为foreach的lambda函数的返回值是void,所以你不能返回一个非void的result: https://docs.oracle.com/javas...
如果你要把结果带出来,有两种办法可以做到。
第一种是在foreach的lambda外面定义一个final变量,比如:
final UserEntity[] result = new UserEntity[1]
list.foreach(entry -> {
result[0] = entry;
return;
});
另一种是直接用filter()将结果过滤出来,然后用collect()方法收集结果。
package com.concretepage;
import java.util.List;
public class FilterFindFirstAndForEach {
public static void main(String[] args) {
List list = User.getUsers();
System.out.println("Using findFirst() ---");
User user = list.stream().filter(u -> u.getName().endsWith("sh"))
.findFirst().orElse(null);
System.out.println(user.getName());
System.out.println("Using forEach() ---");
list.stream().filter(u -> u.getName().endsWith("sh"))
.forEach(u -> System.out.println(u.getName()));
}
}