Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中以lambda形式返回谓词_Java_Filter_Lambda_Java 8_Predicate - Fatal编程技术网

在Java中以lambda形式返回谓词

在Java中以lambda形式返回谓词,java,filter,lambda,java-8,predicate,Java,Filter,Lambda,Java 8,Predicate,在在线教程中,他们使用lambda筛选用户列表: List<User> olderUsers = users.stream().filter(u -> u.age > 30).collect(Collectors.toList()); 但这会带来一些错误 (我在user中获取了age字段)。 有没有办法调整界面过滤器或其他方法来实现此功能?您只需使用谓词而不是过滤器您不需要过滤器类型。只需让filterUsers方法接受一个谓词,并将其传入: public List&l

在在线教程中,他们使用lambda筛选用户列表:

List<User> olderUsers = users.stream().filter(u -> u.age > 30).collect(Collectors.toList());
但这会带来一些错误

(我在
user
中获取了
age
字段)。
有没有办法调整界面
过滤器
或其他方法来实现此功能?

您只需使用
谓词
而不是
过滤器

您不需要
过滤器
类型。只需让
filterUsers
方法接受一个
谓词
,并将其传入:

public List<User> filterUsers(Predicate<User> p, List<User> users) {
    return users.stream().filter(p).collect(Collectors.toList());
}
公共列表过滤器用户(谓词p,列表用户){
返回users.stream().filter(p.collect)(Collectors.toList());
}
这将允许您编写如下内容:

List<User> filtered = filterUsers(u -> u.age > 10, users);
List filtered=filterUsers(u->u.age>10,用户);
如果你想让你的“olderThan”产品更方便,你可以写:

public Predicate<User> olderThan(int age) {
    return u -> u.getAge() > age;
}
公共谓词olderThan(int-age){
返回u->u.getAge()>age;
}
然后你可以写:

List<User> filtered = filterUser(olderThan(15), users);
List filtered=filterUser(olderThan(15),用户);

您可以使筛选方法更通用。类似于此:
publicslist过滤器列表(PredicateGreat泛化!)!
List<User> filtered = filterUser(olderThan(15), users);