Java 筛选列表流中对象的内部列表

Java 筛选列表流中对象的内部列表,java,java-stream,Java,Java Stream,我有个人物品的清单 public class Person { private String name; private List<Animal> animals; } 我试图从中创建一个新的列表,并且我试图只提取那些有特定姓名的人 List<Person> filteredPeople = people.stream() .filter(e -> e.getName().equals("John")).collec

我有个人物品的清单

public class Person {
    private String name;
    private List<Animal> animals;
}
我试图从中创建一个新的列表,并且我试图只提取那些有特定姓名的人

List<Person> filteredPeople = people.stream()
                .filter(e -> e.getName().equals("John")).collect(Collectors.toList());

你可以通过

persons.stream()
    .filter(p -> p.getName.equals("John") || p.getAnimals().stream().anyMatch(a -> a.getName.equals("lucky")))
    .collect(Collectors.toList())

使用
anyMatch
而不是
filter
filter(e->e.getanies().stream().anyMatch(f->f.getName().equals(“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())