在List流中过滤内部的对象列表

问题描述 投票:0回答:1

我有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")))
java spring stream
1个回答
1
投票

你可以通过以下方式实现

persons.stream()
    .filter(p -> p.getName.equals("John") || p.getAnimals().stream().anyMatch(a -> a.getName.equals("lucky")))
    .collect(Collectors.toList())
© www.soinside.com 2019 - 2024. All rights reserved.