首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用lambda过滤包含二级列表中某个对象属性的列表?

如何使用lambda过滤包含二级列表中某个对象属性的列表?
EN

Stack Overflow用户
提问于 2016-12-22 15:30:42
回答 1查看 12.6K关注 0票数 7

例如,有两个类:

代码语言:javascript
运行
复制
class Team { 
 List<Player> players; //with getter & setter
}
class Player{
  String name; //with getter & setter
  int number;  //with getter & setter
}

因此,如果有三个团队:

红队:亚当(4人),汤姆(5人),彼得(11人)

蓝队:肯(5人),贾斯汀(11人)

黑队: Kim(4),Jackal(3)

我想使用lambda来获得拥有球衣号码为X的成员的团队。例如:

带有4的过滤器将显示为红色和黑色

滤镜与11将得到红色和蓝色。

我只知道如何在玩家级别进行过滤,比如

代码语言:javascript
运行
复制
players.stream().filter(p->p.number.equal(X))

或flatmap来获取球员列表

代码语言:javascript
运行
复制
teams.stream().flatmap(t->t.getPlayers())

但是我如何混合这些lambda来让球队在球员上有一个属性过滤器呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-22 15:43:39

解决方案可能如下所示:

代码语言:javascript
运行
复制
int playerNumber = ...;
List<Team> filteredTeams = 
    teams
    .stream()
    .filter(
        t -> t.getPlayers().stream().anyMatch(p->p.number==playerNumber)
    )
    .collect(Collectors.toList());
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41277862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档