我上课像
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());
请查看link以获取有关
flatMap
的更多信息。