使用流迭代 n 次,而不是使用 for 循环创建 n 项

2024-04-15

假设我想创建 n 个项目。在 Java 8 之前,我会这样写:

List<MyClass> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
    list.add(new MyClass());
}

有没有一种优雅的方式使用流来创建 n 个项目?
我想到了这一点:

List<MyClass> list = Stream.iterate(0, i -> i).limit(10)
    .map(o -> new MyClass()).collect(Collectors.toList());

是否有标准/更好的编码方法?

请注意,actual用法有点复杂,使用流会更灵活,因为我可以立即通过一行中的其他函数泵送项目,甚至无需创建对列表的引用,例如对它们进行分组:

Stream.iterate(0, i -> i).limit(10).map(o -> new MyClass())
    .collect(Collectors.groupingBy(...));

你可以使用Stream#generate http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#generate-java.util.function.Supplier- with limit http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#limit-long-:

Stream.generate(MyClass::new).limit(10);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用流迭代 n 次,而不是使用 for 循环创建 n 项 的相关文章

随机推荐

  • git-http-backend 返回错误 502

    我在我的服务器上运行 gitweb 和 gitolite http git jshawl com http git jshawl com 我在设置时遇到问题git http backend允许匿名克隆 这是我的虚拟主机文件 etc apac
  • 使用 jquery 捕获给定元素的所有事件(单击、更改、鼠标悬停等)

    无论如何 我可以检查现有元素是否附加了事件处理程序吗 假设一个简单的javascript方法向某个div example 无jquery 添加了一个点击事件 因此没有属性标签 那么是否可以使用jquery捕获附加的事件 我尝试使用下面的代码
  • 从 Teradata 12 升级到 Teradata 13 后出错....terasso.dll

    我们目前正在将 Teradata 客户端从 v12 升级到 v13 为此 从系统中卸载了旧版 Teradata 12 并安装了 TTU13 安装后 当我尝试使用新的 Teradata 驱动程序添加 ODBC 连接时 出现以下错误 teras
  • 如何检查iOS版本 delphi xe5/xe6

    有没有办法在 Delphi 应用程序中检查 iOS 版本 我想在 Delphi XE6 中为 iOS7 和 iOS6 创建特定的代码段 您可以使用服务版本 http docwiki embarcadero com Libraries XE6
  • React Router 的 组件中的状态是什么?

    这是他们的文档的屏幕截图 成分 https i stack imgur com qt5zs png What state他们是什么意思 ARedux state 通过一个州是什么样子的 像这样 pathname foo query x th
  • 导入 matplotlib 时 numpy 的版本错误

    When I import matplotlib 我没有收到任何错误 但是当我 import matplotlib pyplot I get RuntimeError module compiled against API version
  • 尝试将我的 LogCat 输出到文件

    有人告诉我这是一个命令行选项 但是 Eclipse 的 Run Run Configurations Target Additional Emulator Command Line Options 字段已经被占用 sdcard C andr
  • 使用 Rstudio Keras 的暹罗网络

    我正在尝试使用 Rstudio Keras 包实现暹罗网络 我尝试实现的网络与您可以在中看到的网络相同这个帖子 https sorenbouma github io blog oneshot 因此 基本上 我将代码移植到 R 并使用 Rst
  • 如何知道webkitSpeechRecognition是否启动?

    我正在制作一个机器人来听我的声音 所以我做了 this recognition new webkitSpeechRecognition 我可以这样做来开始听 this recognition start 这是停止听 this recogni
  • Java:为什么这个交换方法不起作用? [复制]

    这个问题在这里已经有答案了 我有以下代码 public class Main static void swap Integer x Integer y Integer t x x y y t public static void main
  • 使用多个字段对 solr 搜索结果进行排序 (solrj)

    我需要根据两个因素对从 apache solr 返回的结果进行排序 我们的系统中有三个实体由 solr 索引 组 项目和数据集 在结果中我希望首先显示数据集 然后是项目 然后是组 但我仍然希望它尊重每种类型的评分值 因此 例如 结果将是 得
  • mysql 查找多列重复项

    如何查找多列的重复记录 表有主键 自动递增 EG ID a id b id 1 34 23 2 34 23 3 35 25 例如我想查找具有相同a id和b id的记录 Thanks select t ID t a id t b id fr
  • 如何找到激活时打开给定 HMENU 的菜单项(如果有)?

    我想用原型实现一个功能 Locates the menu item of the application which caused the given menu mnu to show up return true if the given
  • 如何将事件处理程序分配给 JavaScript 中的多个元素?

    我知道如何使用 jQuery 来做到这一点 并且我知道如何使用事件委托来做到这一点 但是如何在纯 JavaScript 中做到这一点呢 例如 如何将事件处理程序分配给一堆lis 我看到var li document querySelecto
  • 代码高尔夫:弗罗贝尼乌斯数

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 编写最短的程序来计算给定正数集的弗罗贝尼乌斯数 弗罗贝尼乌斯数是不能写成集合中数字的正倍数之和
  • CKEditor 5 通过外部 url 插入图像

    我想知道如何仅通过 URL 插入图像 用户从其他网站获取它 我需要实现一个简单的img 源 在 CKEditor 5 中 问题是 默认情况下 编辑器要求我上传图像 而我需要插入外部 url 我读过很多相关主题 1 https stackov
  • 带正文的 HttpDelete

    我正在尝试使用 HttpDelete 对象来调用 Web 服务的删除方法 Web 服务的代码从消息正文中解析 JSON 但是 我无法理解如何将主体添加到 HttpDelete 对象 有没有办法做到这一点 使用 HttpPut 和 HttpP
  • Python 的“导入”内部是如何工作的?

    当您导入一个模块 然后再次重新导入它时 它会被重新导入 覆盖还是跳过 当您导入模块 a 和 b 并且还在模块 a 中导入模块 b 时 会发生什么 这样做安全吗 例如 如果该模块 b 中有一个实例化的类 您最终会实例化它两次吗 import加
  • 我在使用阴影效果时表现不佳

    我在滚动视图上放置了一些图像视图 当我拖动这个滚动视图时 我没有遇到任何问题 但是 当我对这些图像视图应用阴影效果后 拖动此滚动视图的性能很差 我使用了shadowOpacity shadowRadius 和shadowOffset 方法
  • 使用流迭代 n 次,而不是使用 for 循环创建 n 项

    假设我想创建 n 个项目 在 Java 8 之前 我会这样写 List