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

标签 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];

此代码无法编译并给我以下错误:

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/

相关文章:

java - 将字符串数组的 json 对象映射到 java 类

java - 在类中委托(delegate) ArrayList

java - 如何让 lambda 表达式在 Java 8 中定义 toString?

javascript - QML:Lambda 函数意外运行

java - 如何在 TextField Java 中限制字符和数字值

eclipse - 二郎erlIDE : what are the -compile options supported?

java - Eclipse 和 Maven - jar 中的资源

java - Android 无法记住我的文件

c++ - 将 lambdas 传递给 std::thread 并调用类方法

java - 改变Java的日期格式