例如,有两个类:
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将得到红色和蓝色。
我只知道如何在玩家级别进行过滤,比如
players.stream().filter(p->p.number.equal(X))
或flatmap来获取球员列表
teams.stream().flatmap(t->t.getPlayers())
但是我如何混合这些lambda来让球队在球员上有一个属性过滤器呢?
发布于 2016-12-22 15:43:39
解决方案可能如下所示:
int playerNumber = ...;
List<Team> filteredTeams =
teams
.stream()
.filter(
t -> t.getPlayers().stream().anyMatch(p->p.number==playerNumber)
)
.collect(Collectors.toList());
https://stackoverflow.com/questions/41277862
复制相似问题