当前位置: 首页 > 知识库问答 >
问题:

如何从一个映射到多个结果的流中进行收集?[副本]

向嘉誉
2023-03-14

我想通过调用expand()来映射列表中的每个条目,它返回多个条目,然后将结果作为列表收集。

如果没有溪流,我会这样做:

    List<String> myList = new ArrayList<>();
    List<String> expanded = new ArrayList<>();
    for (String s : myList) {
        expanded.addAll(expand(s));
    }
    return expanded;

    private List<String> expand(String x) {
        return Arrays.asList(x, x, x);
    }

我如何用流来完成这件事呢?这将给出一个编译错误:

返回MyList.Stream().Map(This::Expand).Collect(Collectors.ToList());

共有1个答案

毕嘉
2023-03-14

flatmap应有助于您:

return myList.stream()
        .flatMap(x -> expand(x).stream())
        .collect(Collectors.toList());
 类似资料:
  • 假设我有以下工作的lambda表达式: 我想在过滤器语句之前创建一个具有2个值的流。所以我想做一个映射,但仍然保留原始值。我想实现这样的事情: 这可能与Java8流?我已经看了收集(GroupingBy()),但仍然没有成功。

  • 由于我不想多次使用流来单独收集每个属性,也不想使用来收集每个属性,是否有任何方法可以用单个流来获得上述属性。

  • 问题内容: 当我从命令行调用存储的proc时,我得到以下信息。 这是我的Java代码的片段 当我执行该语句时,仅返回event_table结果。我阅读以下查询: 我试图避免对数据库发出多个请求,因为它非常慢(300毫秒,具体取决于多少结果) 可能吗? 问题答案: 我找到了这篇很棒的文章。http://www.herongyang.com/JDBC/MySQL-CallableStatement-M

  • 我必须运行多个外部调用操作,然后以列表的形式获得结果。我决定使用api,而我准备的代码相当恶心: 示例: 我有以下几个问题: > 我可以避免在流中重复块吗?在流中我将CompletableFuture映射到User? 此代码是否可以不那么连续(如何避免等待所有的未来完成?) 这样做可以吗(所有的未来都将在流中解决吗?):

  • 我有一个映射到多个映射的spring boot rest控制器方法。请查找下面的示例代码。 我想从swagger文档中隐藏映射。 有人能帮我实现这一目标吗?