我有List of Person对象
public class Person {
private String name;
private List<Animal> animals;
}
其中有动物对象的列表。
public class Animal {
private String name;
}
我想创建一个新的列表 我想只提取那些有特定名字的人的名字
List<Person> filteredPeople = people.stream()
.filter(e -> e.getName().equals("John")).collect(Collectors.toList());
是否可以再增加一个过滤器,我如何访问人里面的动物列表,这样我就可以通过动物名称进行过滤--例如,如果任何动物(人里面的)名称是 "Lucky",就可以把这个人对象放在新的列表里面?
看起来这不是一个有效的想法。
.filter(e -> e.getAnimals().stream().filter(f -> f.getName().equals("lucky")))
你可以通过以下方式实现
persons.stream()
.filter(p -> p.getName.equals("John") || p.getAnimals().stream().anyMatch(a -> a.getName.equals("lucky")))
.collect(Collectors.toList())