当前位置: 首页 > 面试题库 >

将嵌套的循环重构到Java 8流中

漆雕深
2023-03-14
问题内容

我有以下for循环

    List<Map> mapList = new ArrayList<>();
    for (Resource resource : getResources()) {
        for (Method method : resource.getMethods()) {
            mapList.add(getMap(resource,method));
        }
    }
    return mapList;

如何将这个嵌套循环重构为Java 8流?


问题答案:

您可以使用flatMap来获取Maps中所有Methods的所有Resource

List<Map> mapList = 
    getResources().stream()
                  .flatMap(r->r.getMethods().stream().map(m->getMap(r,m)))
                  .collect(Collectors.toList());


 类似资料:
  • 我是Java8中的流的新手。我正在努力弄清楚如何在使用流的列表上实现嵌套的for循环。一个列表包含消息,消息中的一个字段是作者的id(不幸的是,不是obj引用)。另一个列表是作者,作者中的一个字段是作者ID。代码需要为消息列表中的每条消息在authors列表中找到匹配的作者。我拥有的工作Java代码(它不使用流或lambda)如下所示,我的问题是如何使用流重写它?我尝试了一些事情,我想一个平面地图

  • 问题内容: 考虑到内部循环满足条件,我循环遍历两个列表以填充最终列表。 我将代码重构为使用最新的Java 8流api,并提出了以下建议: 我如何才能进一步删除嵌套的foreach()方法? 问题答案: 通过与内部调用(从而使外部实例发生突变)而使用的问题是,如果有人并行旋转流并且集合不是线程安全的,则很容易遇到并发问题。 相反,您应该赞成适用于可变缩减的collect方法: 您可能还需要预先构建映

  • 最近,我的一位朋友问我是否可以在R中列出一个由分隔的数字列表,这些数字的总和为1。例如,向量中3个数字的所有可能组合等于1。顺序并不重要。 我一直在使用,但是随着数量的增加,内存需求激增。由于顺序不重要,我们认为只考虑一些组合来减少矩阵。如果我们这样做111表示值,123表示,我们只考虑111, 112, 113 ... 119, 122, 123, ... 129, 133...等等。 请注意,

  • 如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(

  • 制作一个单页的WordPress主题。使用此循环调用所有页面并将其显示为部分(html5标记): 这将创建一个基于页面的漂亮的小循环部分。我唯一关心的是:其中一个“页面”/部分应该显示一些博客文章。正在寻找一种基本上在循环中创建循环的方法——可以随页面一起重新排序。 所以我想我的问题是: 这段代码看起来像什么 谢谢

  • 我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?