考虑到一个人(Person)列表:
class Person {
private Integer id;
private Integer age;
private String name;
private Long lat;
private Long lont;
private Boolean hasComputer;
...
我希望能够返回符合以下条件的前五个人:年龄在30到32岁之间,并且拥有电脑。如果首先尝试匹配所有条件失败,则尝试匹配其中任意一个条件。我想采用类似全文搜索的排名系统来实现,但我对Stream还不熟悉,仍在寻找解决方案。
List<Person> persons = service.getListPersons();
persons.stream().filter(p -> p.getAge.equals(age) && p.hasComputer().equals(true)).allMatch()
有什么想法吗?谢谢!
编辑:
也许我可以创建一个谓词,例如
Predicate predicate = p -> p.getAge() < 30 && e.name.startsWith("A");
首先尝试匹配所有条件,如果不可能,则尝试匹配任何条件:
Persons.steam().allMatch(predicate).limit(5);
Person.steam().anyMatch(predicate).limit(5);
Persons
是什么?它是Person
的列表吗? - Rishikesh Dhokare