我上课像

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的更多信息。

10-06 02:20