首页 > 解决方案 > 如何将包含字符串列表(内部列表)的对象列表转换为字符串列表

问题描述

我有课

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);

标签: javacollectionsjava-8java-stream

解决方案


使用flatMap代替map

List<String> apiIdList = roleAccessList.stream()
    .flatMap(e -> e.getApiIdList().stream())
    .collect(Collectors.toList());

请查看链接以获取有关flatMap.


推荐阅读