使用lambda表达式从对象列表中选择Object

Tin*_*wor 11 java eclipse lambda java-8

大家好我有一个List<User>,我想添加一个方法,返回使用Id找到的特定用户.我想使用lambda表达式,所以我尝试了这个,但它不起作用.

...
List<User> user = users.stream().filter(x -> x.id == id).collect(Collectors.toList());
return user[0];
Run Code Online (Sandbox Code Playgroud)

这段代码不编译并给我这些错误:

The method stream() is undefined for the type List<User>
Lambda expressions are allowed only at source level 1.8 or above *
Collectors cannot be resolved
Run Code Online (Sandbox Code Playgroud)
  • 我正在使用eclipse 4.4.3 Kepler,我已经在机器中安装了java 8,并且在eclipse中使用了java8的插件

kaj*_*acx 22

建议:如果你只想要第一个元素匹配条件,不要收集列表中的所有元素(这有点矫枉过正),改用findFirst()方法:

return users.stream().filter(x -> x.id == id).findFirst().get();
Run Code Online (Sandbox Code Playgroud)

请注意,findFirst()将返回一个Optional对象,get()如果没有这样的元素,将抛出异常.