java - 不知道为什么这个 stream() 不能在这个嵌套列表上工作?
问题描述
我有两个嵌套列表类型,如下所示:
List<Team> team;
public class Team{
private String teamId;
private List<TeamUsers> teamUsers;
--getter setter...
}
public class TeamUsers{
private int TeamUsersId;
private int active;
--getter setter...
}
我想返回所有列表,并且在每个 Team 对象内部,如果 TeamUsers 对象 active = 0,则不要在嵌套列表中返回此 TeamUsers 对象。这是我的代码:
List<Team> alldata = (List<Team>) teamRepo.findAll();
List<Team> finalResult = alldata.stream()
.filter(a -> a.getTeam_users().stream().allMatch(b -> b.getActive() == 1)).collect(Collectors.toList());
它只返回给我所有 TeamUsers.active = 1 的第一个团队。
在第二个团队中,我确实有一些 TeamUsers.active = 1 和一些 TeamUsers.active = 0。
我犯了什么错误?
解决方案
您要修改用户列表:
List<Team> alldata = (List<Team>) teamRepo.findAll();
List<Team> finalResult = alldata.stream()
.map(t -> new Team(t.getTeamId(),
t.getTeamUsers().stream()
.filter(u -> u.getActive() == 1)
.collect(Collectors.toList())))
.filter(t -> t.getTeamUsers().size() != 0)
.collect(Collectors.toList());
推荐阅读
- c++ - 为什么临时的“测试”没有移动,而只是构建?
- c - 为什么使用 getchar 输入时 putchar 不返回新行?
- openssl - .cert 中的 OpenSSL 主题与 .csr 不同
- javascript - 用block语句提升javascript
- node.js - Webpack“找不到模块:错误:无法解析'../webfonts/fa-solid-900.eot'”
- sql - 解决错误操作数时遇到问题应包含 1 列
- android - 如何使用 Retrofit 从 API REST 获得更快的响应
- r - 是否有任何 R 方法可以创建为附加的 GIF?
- javascript - 如何使用 .delay(x).animate({'opacity':'1'},x); 淡化每个不透明度为 0 的内部元素?
- vue.js - Quasar框架和Vuetify如何集成?