【发布时间】:2018-08-17 15:14:10
【问题描述】:
希望根据定义为谓词的某些条件过滤列表(以下只是示例):
Predicate<Person> agePredicate = p -> p.age < 30;
Predicate<Person> dobPredicate = p -> p.dateOfBirth < 1980;
Predicate<Person> namePredicate = p -> p.name.startWith("a");
List<Predicate<Person>> predicates = Arrays.asList(agePredicate, dobPredicate, namePredicate);
List<Person> shortListPersons = listPersArrays.asList(listPersons).stream().filter(p -> predicates.stream().allMatch(f -> f.test(p))).limit(10).collect(Collectors.toList());
在我找不到任何人/足够多的人的情况下,我怎样才能获得符合尽可能多标准的人的列表 - 一种排名。
我的另一个选择是再次调用与上面相同的函数,但使用 anyMatch 代替,但它不会很准确。
有什么想法吗?谢谢!
【问题讨论】:
标签: java java-stream predicate