java - 如何将包含字符串列表(内部列表)的对象列表转换为字符串列表
问题描述
我有课
public class RoleAccess {
private String roleId;
private List<String> apiIdList;
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
public List<String> getApiIdList() {
return apiIdList;
}
public void setApiIdList(List<String> apiIdList) {
this.apiIdList = apiIdList;
}
}
我想创建一个新列表,它将添加来自 roleaccess 的所有 apiIdlist
List<String> apiIdList = new ArrayList<>();
for (RoleAccess roleAccess : roleAccessList) {
if (roleAccess.getApiIdList() != null) {
apiIdList.addAll(roleAccess.getApiIdList());
}
}
我们如何使用流 api 或最好的解决方案来做到这一点?
我检查了要列出的普通对象列表,但我想列出对象列表和要列出的内部列表我试过了
List<String> apiIdList = roleAccessList.stream()
.map(RoleAccess::getApiIdList)
.collect(ArrayList::new, List::addAll, List::addAll);
解决方案
使用flatMap
代替map
:
List<String> apiIdList = roleAccessList.stream()
.flatMap(e -> e.getApiIdList().stream())
.collect(Collectors.toList());
请查看链接以获取有关flatMap
.
推荐阅读
- python - 在另一个 python 文件中运行一个 python 文件(没有类和函数)
- ruby-on-rails - Rails config.force_ssl = true; Rails/Rack 是否在解密 SSL?
- azure - 如何阻止来自 AbuseIPDB 中列入黑名单的 IP 地址对应用服务的请求
- java - 使用 @Capture Mockito 进行测试时出现问题
- node.js - 如何减少这些之前/之后操作中的代码重复?
- angular - 如何在 Angular 8 中捕获动态渲染组件的输出?
- android - 为什么即使在正确设置返回值非 null 之后也要改造返回 Null 'LiveData'?
- python - python套接字连接不返回任何信息
- vue.js - 我在哪里可以检查 Vue.js 生成的渲染函数?
- html - 如何将多页网站表中的所有数据提取到 Power BI 中?