如何在 Java 8 中以相反顺序从列表中获取有序流

2023-12-23

是否有一种明智的方法可以从列表(特别是数组列表,但这不重要)中获取有序流,该流以与原始列表中的相反的方式流式传输元素?

我正在寻找一种不涉及缓冲任何内容(收集器、另一个列表、数组等,因为它们复制浪费的容器)中的数据的解决方案,或者使用Collections.reverse(因为它修改了列表)。

到目前为止,我在这里看到的最干净的方法是实现我自己的版本Spliterator that's ORDERED并反向推进列表,或者实施Iterator反向迭代,并使用Spliterators.spliteratorUnknownSize(iterator,ORDERED) on it.

请注意,这个问题不同于Java 8 流逆序 https://stackoverflow.com/questions/24010109/java-8-stream-reverse-order:另一个问题询问如何反转流(在一般情况下这是不可能的),并且答案提供以某种方式反转源(我不想这样做),然后流式传输反转的源。反转源的成本是 O(N),如果可能的话我想完全避免它。


If your List是一个随机访问列表,您可以简单地使用

int num=list.size()-1;
IntStream.rangeClosed(0, num).mapToObj(i->list.get(num-i))

创建一个Stream其具有以下特点ORDERED | SIZED | SUBSIZED并提供完整的拆分支持。

对于非随机访问列表,例如LinkedList然而,这将是一场性能灾难,谁使用LinkedList anyway?

您还可以通过以下方式检查list instanceofRandomAccess http://docs.oracle.com/javase/8/docs/api/java/util/RandomAccess.html first…

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

如何在 Java 8 中以相反顺序从列表中获取有序流 的相关文章

随机推荐

  • 递归调用函数对象

    如何从函数对象内部调用函数对象 看来我不能使用this 例子 class factorial public int operator int n if n 0 return 1 return n n 1 我该放在什么地方 include
  • 对于如何使用 VB.NET 在 ASP.NET 中创建按钮单击事件,为什么选择私有与受保护?

    我从来没有认真思考过一些事情 但我很好奇并且想了解实际的推理 在 ASP NET 中使用VB NET 您可以通过 2 种不同的方式定义连接按钮单击事件 到 ASP NET 服务器控件 出于本次对话的目的 通过按钮属性手动连接 这里不讨论 双
  • Mongoose 聚合 $match 与 ids 不匹配

    我想按 ids 显示产品 56e641d4864e5b780bb992c6 and 56e65504a323ee0812e511f2 并显示减去折扣后的价格 如果有 我可以使用聚合来计算最终价格 但这会返回集合中的所有文档 如何使其仅返回匹
  • 为什么epoch太多会导致过拟合?

    我正在阅读 Python 深度学习 一书 读完第 4 章 对抗过度拟合 后 我有两个问题 为什么增加纪元数可能会导致过度拟合 我知道增加纪元数将涉及更多的梯度下降尝试 这会导致过度拟合吗 在对抗过拟合的过程中 准确率会降低吗 我不确定您正在
  • 动态加载脚本后访问变量

    首先 这个项目不使用 JQuery 我们有一些第三方 JavaScript 它又大又多 不需要经常使用 因此我们仅在需要时才动态加载它 function loadBigHairyCode var file document createEl
  • 是否可以在 TypeScript 中断言编译错误?

    例如 在 Scala 中 可以执行以下操作 ScalaTest assertDoesNotCompile val a String 1 assertTypeError val a String 1 assertCompiles val a
  • 是否建议在客户端使用Web SQL数据库进行存储[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • application/* Content-Type 和字符集属性

    The RFC 2616 https www ietf org rfc rfc2616 txt3 7 1 中规定 当发送方没有提供明确的字符集参数时 媒体 text 类型的子类型被定义为具有默认字符集 通过 HTTP 接收时的 ISO 88
  • CMake 的 CUDA 12 C++20 支持不起作用

    我正在尝试使用 CMake 3 25 在 Visual Studio 2022 的 CUDA 12 中启用新的 C 20 支持 如果我设置这些变量 set CMAKE CUDA STANDARD 20 works with 17 but n
  • 如何保证进程运行在特定的物理CPU核心和线程上?

    这个问题 https stackoverflow com questions 4664668 how to force two process to run on the same cpu询问确保两个进程在同一 CPU 上运行 使用sche
  • “viewable_range”概念有什么意义?

    范围 细化 https eel is c draft range refinements viewable range 概念指定了可以安全转换为视图的范围类型的要求 它的强制实施大致规定range进一步满足viewable range如果其
  • NSAutoreleasePool 内存泄漏

    使用仪器 我在这段代码上出现了内存泄漏 我不明白为什么 void goToThisUrl id targetUrl NSAutoreleasePool pool NSAutoreleasePool alloc init if someCon
  • 使用ajax选择2个默认选项

    我有下一个 html 结构
  • Vertx 连接超时未捕获 JDBCClient (.getConnection)

    我无法处理 JDBCClient 中连接失败的情况 例如 没有主机可路由 连接超时等 因为方法 getConnection 不会返回 failedFuture 但它在监视器中显示原因 然后它将保持沉默 我认为当连接超时或其他原因时 它应该发
  • 正则表达式:如果包含特定字符串则不匹配

    我有两个字符串 Some Stuff S00E00 HDTV x264 2HD mp4 Some Stuff S00E00 720p HDTV X264 这个正则表达式 ome tuff mp4 HDTV x264 我需要的是只匹配第一个
  • Spring Batch - java 配置与 xml

    我已经使用 Spring Batch 的 Xml 配置一段时间了 感觉它更简单 简洁 然而 如今 人们建议使用 javaconfig 而不是 xml 我用谷歌搜索了这个话题 这个网站告诉我们为什么 javaconfig 更好https bl
  • TortoiseSVN 需要打开哪些端口来进行身份验证(明文)和提交?

    TortoiseSVN 需要打开哪些端口进行身份验证 基本 才能提交 我知道这不是一件好事 但我相信用户名和密码现在是清楚的 让我尽可能多地描述一下我所知道的设置以及似乎正在发生的事情 我是一名承包商 帮助一个州部署和修改 大部分 公共领域
  • PC 到 Macbook Pro 的过渡 - 开始(重新)开始?

    我现在正在学习第二门计算机科学课程 到目前为止 我很喜欢编程 但实际上只是勉强度日 除了必修的课堂作业之外 我没有做过太多编程 出于类似的原因 我从未真正投资过下载 学习软件来帮助我编程 IDE 编辑器 编译器等 我知道这听起来很乏味 但我
  • 如何将 UIWebView 内运行的 HTML 事件发送到本机 Objective-C 代码?

    我想在 iOS 应用程序中集成一个完整的 HTML 框架 即 HTML CSS JavaScript 并使 UIWebView 负责运行 HTML 内容 从而能够与本机 Objective C 源代码的其余部分进行通信 方向 1 从 Obj
  • 如何在 Java 8 中以相反顺序从列表中获取有序流

    是否有一种明智的方法可以从列表 特别是数组列表 但这不重要 中获取有序流 该流以与原始列表中的相反的方式流式传输元素 我正在寻找一种不涉及缓冲任何内容 收集器 另一个列表 数组等 因为它们复制浪费的容器 中的数据的解决方案 或者使用Coll