如何实现Java流?

2024-02-27

我想实施一个Stream<T>.

我不想只使用implements Stream<T>,因为我必须实现大量方法。

这可以避免吗?

更具体地说,我如何直播t1, t2 and t3例如:

class Foo<T> {
    T t1, t2, t3;

    Foo(T t1, T t2, T t3) {
        this.t1 = t1;
        this.t2 = t2;
        this.t3 = t3;
    }
}

JDK的标准实现Stream是内部类java.util.stream.ReferencePipeline,你不能直接实例化它。

Instead you can use java.util.stream.Stream.builder(), java.util.stream.StreamSupport.stream(Spliterator<T>, boolean) and various1 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#of-T...-, 2 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#StreamSources other static factory methods to create an instance of the default implementation.

使用 spliterator 可能是最强大的方法,因为它允许您惰性地提供对象,同时如果您的源可以分为多个块,还可以实现高效的并行化。

此外,您还可以将流转换回分割器,将它们包装在自定义分割器中,然后如果您需要实现自己的分割器,则将它们转换回流有状态中间操作- 例如由于标准 API 的缺陷 - 因为大多数可用的中间操作不允许有状态 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#Statelessness.
See 这个答案 https://stackoverflow.com/a/28363324/1362755举个例子。

原则上,您可以编写自己的流接口实现,但这将非常乏味。

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

如何实现Java流? 的相关文章

随机推荐

  • CMake:使用 target_sources() 添加当前目录和子目录中的所有文件

    在我们的 C 项目中 我们有几个 CMakeLists txt 文件 位于不同的目录 列出了所需的每个 cpp 文件target sources 例如 target sources
  • 属性的自定义模型活页夹

    我有以下控制器操作 HttpPost public ViewResult DoSomething MyModel model do something return View Where MyModel看起来像这样 public class
  • Python 中的运算符优先级 -PEMDAS

    我读到关于Python遵循PEMDAS的内容 即乘法的优先级高于除法 我运行了以下脚本 print 6 2 1 2 因此 python 应该将其解释为 12 2 即 6 因为乘法的优先级高于除法 但是 答案是24 谁能告诉我问题出在哪里 谢
  • 在 Excel 中计算电力塔的困难

    我似乎在让 Excel 正确计算电力塔时遇到一些麻烦 如果我输入 0 001 0 002 0 003在单元格中 Excel 将答案输出为0 99995855而不是正确答案0 00113609 据我所知 Excel正在解释a b c as a
  • 为什么R在重命名栅格堆栈层时添加“x”

    我在 R 中有一个包含 84 层的栅格堆栈 砖块 我试图根据从 199911 到 200610 1999 年 11 月到 2006 年 10 月 的年份和月份来命名它们 然而 由于某种原因 R 不断在我给图层指定的任何名称的开头添加 X 有
  • 使用 powershell 验证证书链

    我正在尝试编写一个脚本来验证 PowerShell 中的证书链 链中的所有证书都未过期 并查找最接近过期的证书 我使用以下脚本来查找颁发者证书 获取子项 递归 路径证书 Where Object Subject eq Certificate
  • Vue 2 - 计算输入的行总数

    我有一个带有数量和价格输入的动态表 并且我使用计算属性来计算每行的总计 现在我需要找到一种方法来计算总计 所有小计的总和 HTML tr td td tr
  • Golang 中带有替换的正则表达式

    我使用 regexp 包来替换下面的文本 macro products list products for product in products productsList endfor endmacro 我无法在不替换 products
  • AFNetworking 3.0无法下载图像

    我正在尝试使用 AFNetworking 3 0 这样做下载图像 UIImage loadImage NSString link block UIImage image UIImage imageNamed no user profile
  • PostgreSQL 中使用 Order By 子句进行分区

    我有一张包含这些值的表 user id ts val uid1 19 05 2019 01 49 50 0 uid1 19 05 2019 01 50 15 0 uid1 19 05 2019 01 50 20 0 uid1 19 05 2
  • 在另一个图像上绘制带有透明点的图像 - 在 Chrome >= 104 中失去透明度

    我的应用程序在 Chrome 104 105 中停止工作 任何人都可以确认此问题吗 steps 透明 DataArray Uint8ClampedArray new Uint8ClampedArray w h 插入一些值 为透明点保留 0
  • 将新元素插入现有 xml 时,lxml 不添加换行符

    我有一大堆现有的 xml 文件 我试图向所有文件添加一个元素 它们是许多 Maven 项目的 pom xml 我试图向所有文件添加一个父元素 以下是我的确切代码 问题是 pom2 xml 中的最终 xml 输出具有完整的parent元素在一
  • 编写一个简单的Bootloader HelloWorld - 错误函数打印字符串

    我尝试创建一个简单的引导加载程序来打印 hello world 当我调用一个仅打印 hello world 的函数时 我可以做到这一点 但是当我调用一个函数来打印特定字符串时 什么也没有发生 为此 我使用两个文件 第一个是 boot ld
  • 删除重复的行,只留下最旧的行?

    我有一个数据表 其中有许多来自用户提交的重复条目 我想根据字段删除所有重复行subscriberEmail 只留下原始提交 换句话说 我想搜索所有重复的电子邮件 并删除这些行 只留下原始的 我怎样才能在不交换表的情况下做到这一点 我的表包含
  • GPGPU:普通 PC 陷入困境的后果

    我在一本书中读到 在波前或扭曲中 所有线程共享一个公共程序计数器 那么它的后果是什么呢 为什么这很重要 NVIDIA GPU 一次执行 32 个线程 扭曲 AMD GPU 一次执行 64 个线程 波前 控制逻辑 读取和数据路径的共享减少了面
  • AzurePS 系统功能在新安装的 vsts-agent 上不可用

    我已在新的 Azure VM Windows Server 2012 R2 64 位 上成功安装新的 VSTS 代理 当我尝试在新的 vsts 代理上执行任何包含 azure powershell 任务的管道时 我收到一条错误消息 错误消息
  • Grails:Tomcat 不会在产品中完全关闭

    我在关闭生产环境中的 Grails 应用程序时遇到问题 从 IntelliJ 运行时 它会干净地关闭 但在独立的 Tomcat 7 上 关闭会使其进入僵尸状态 其中 java 进程仍然存在 但 HTTP 请求挂起 我必须杀死java进程 使
  • ClickableSpan TextView 在单击后保持选中状态

    我正在使用以下代码来制作我的TextView显示像一个链接 当用户单击它时 我会显示一个AlertDialog 但在用户离开对话框后 文本仍保持选中状态 而且看起来很丑 TextView terms TextView findViewByI
  • Angular 2:从 MockBackend 静态解析符号值时遇到错误

    我是 Angular2 的新手 正在尝试运行它tutorial http jasonwatmore com post 2016 08 16 angular 2 jwt authentication example tutorial 它使用一
  • 如何实现Java流?

    我想实施一个Stream