我有一个 List<User>
我想添加一个方法来返回使用 Id 找到的特定用户。我想使用 lambda 表达式来实现,所以我已经尝试过了,但它不起作用。
...
List<User> user = users.stream().filter(x -> x.id == id).collect(Collectors.toList());
return user[0];
此代码无法编译并给我以下错误:
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
- 我正在使用 eclipse 4.4.3 Kepler,我已经在机器中安装了 java 8 以及用于在 eclipse 中使用 java8 的插件。
最佳答案
建议:如果您只想匹配条件的第一个元素,请不要收集所有元素以列出(这有点矫枉过正),而是使用 findFirst()
方法:
return users.stream().filter(x -> x.id == id).findFirst().get();
请注意,findFirst()
将返回 Optional对象,如果没有这样的元素,get()
将抛出异常。
关于java - 使用 lambda 表达式从对象列表中选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24799650/