将流拆分为具有 N 个元素的子流

2024-01-08

我们能否以某种方式将 Java 中的流拆分为不超过 N 个元素的子流? 例如

Stream<Integer> s = Stream.of(1,2,3,4,5);
Stream<Stream<Integer>> separated = split(s, 2);
// after that separated should contain stream(1,2), stream(3,4), stream(5)

按两个流拆分解决方案仅对于 2 个流是正确的,对于 N 个流也是如此,将非常丑陋且只写。


你不能分割一个Stream分成2个或更多Streas简单直接。程序性方法的唯一方法是将元素收集到List由夫妇并将它们映射回Stream again:

Stream<Integer> s = Stream.of(1,2,3,4,5);
List<Integer> list = s.collect(Collectors.toList());
int size = list.size();
    
List<List<Integer>> temp = new ArrayList<>();
List<Integer> temp2 = new ArrayList<>();
    
int index = 0;
for (int i=0; i<size; i++) {
    temp2.add(list.get(i));
    if (i%2!=0) {
        temp.add(temp2);
        temp2 = new ArrayList<>();
    }
    if (i == size - 1) {
        temp.add(temp2);
    }
}
Stream<Stream<Integer>> stream = temp.stream().map(i -> i.stream());

正如你所看到的,这是一条很长的路,而且不值得。将这些对存储在List而不是Stream? The java流 /questions/tagged/java-streamAPI 不用于数据存储,而是用于数据处理。

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

将流拆分为具有 N 个元素的子流 的相关文章

随机推荐

  • 如何将 setOnFocusChangeListener 与 RecyclerView 结合使用?

    我在 RecyclerView 的适配器类中的 onBindViewHolder 上有以下内容 holder answerEditText setOnFocusChangeListener new View OnFocusChangeLis
  • 在 VS2010 中将设计器与 WPF 的 XAML 窗口分离

    我在 Visual Studio 2010 中没有看到用于将设计器窗口与 WPF 的 XAML 窗口分开的按钮 我有三个屏幕 我想要一个全屏 XAML 窗口和一个全屏设计器窗口 像往常一样打开 XAML 文件 在解决方案资源管理器中 右键单
  • 我如何打开不同的linux终端以在python中输出不同类型的调试信息?

    我需要将不同的信息输出到不同的终端实例 而不是在同一输出流中打印它们 例如 std err 或 std out 例如 我有 5 种信息说 A E 需要显示在同一桌面上的不同终端窗口上 看起来像 终端1 终端2 端子3 端子4 端子5 我知道
  • 用前导 0 填充计数器到 9,然后用 php 删除前导零

    尝试用前导 0 填充最多 9 个 然后删除 01 02 03 04 05 06 07 08 09 10 11 12 14 到目前为止我有这个 您还可以使用str pad http us php net manual en function
  • Firefox 和 Opera 中的 Webfont 平滑和抗锯齿

    我的网站上使用了定制的网络字体 为了设置渲染输出的样式 我使用了以下代码 webkit text stroke width 05px webkit text stroke color white webkit font smoothing
  • 如何只加载某些层的权重?

    我想获取某些层的权重 不是全部 因为架构不同 来自model trained并初始化model untrained用它 我怎样才能用 Keras 做到这一点 如果你有一个函数create model 它返回一个 Keras 模型 examp
  • 如何将QMainWindow设置为模态窗口?

    我正在使用 QMainWindow 进行项目的 GUI 开发 我遇到的一个问题是当一个窗口正在运行时阻止所有其他可见窗口获取输入 我不能使用QDialog 因为需要QMainWindow的丰富功能 如何将特定窗口声明为模态窗口 我尝试过QW
  • BeanPostProcessor 混乱

    我试图理解 Spring 中的 BeanPostProcessor 但不明白它的作用 BeanPostProcessor 定义了在这些点调用的两个方法是否正确 在初始化之前 init 方法或 afterPropertiesSet 但实例已创
  • Camel Splitter并行处理数组列表-并发访问问题

    使用 Camel 拆分 ArrayList 并最多 10 个线程并行处理每个项目 以下是配置 线程池配置文件设置为最大线程数 10
  • 计算闰年的Java代码

    我正在关注 Java 的艺术与科学 一书 它展示了如何计算闰年 本书使用了ACM Java Task Force 的库 这是本书使用的代码 import acm program public class LeapYear extends C
  • C# Thread.Sleep(0) 是什么意思?

    意思是没有延迟吗 一本书上说如下 Thread Sleep 0 放弃线程的当前时间片 立即 主动将CPU交给其他线程 这是否意味着即使应该执行一条语句 给 sleep 0 也会暂时跳过执行 0表示没有minimum控制权将返回给线程之前的时
  • 使用Python列表作为队列的效率

    一位同事最近编写了一个程序 其中使用 Python 列表作为队列 换句话说 他用了 append x 当需要插入物品时 pop 0 当需要移除物品时 我知道Python有collections deque http docs python
  • 如何让 TProgressBar 停止滞后?

    我有一个运行大量操作的应用程序 并且我正在尝试使用 TProgressBar 来跟踪正在发生的情况 我设置了多个步骤 并调用 StepIt 来增加进度条 问题是 它并没有很好地跟上 它似乎不喜欢直接跳到正确的位置 而是逐渐滑动到正确的位置
  • 如何获取调用别名方法的名称?

    我正在调用方法link to admin然后我给另一个方法起了别名simple link to def link to admin name url options My stuff here link to name url option
  • 使 Http DefaultClient 的execute()非常慢

    我的 HttpDefaultClient 的 execute 方法的执行方法存在大量性能问题 我目前正在使用它来将数据发布到服务器 接收 JSON 并反序列化数据 我的手机打电话需要 8 到 30 秒 如果我切换到 Wifi 速度相当快 在
  • Wix:安装过程中忽略对话框中的属性更改

    我在 Wix 文件中有一个属性 该属性公开用于在对话框中进行编辑 在下面的示例中 它是 MyProperty 该属性用于创建注册表项 但是 如果在对话框中更改属性 则不会使用更改后的值 而是默认值 SomeProperty 但是 如果我在另
  • Python 多处理问题?

    我有一个包含 500 个输入文件的文件夹 所有文件的总大小约为 500 MB 我想写一个python执行以下操作的脚本 1 将所有输入文件加载到内存中 2 初始化一个空的python稍后将使用的列表 参见项目符号 4 3 启动 15 个不同
  • 如何使用 Huggingface Trainer 微调 gpt-j

    我正在尝试使用 Huggingface 训练器微调 gpt j 但惨败 我遵循了引用 bert 的示例 但是当然 gpt j 模型并不完全类似于 bert 模型 该错误表明模型没有产生损失 这很好 但我不知道如何让它产生损失或如何改变训练者
  • 如何在postgresql中使用for循环创建多个表

    如何使用一个表创建多个表forpostgresql 中的循环 例如 我需要创建 c emloyee r employee i employee 等 我在 FOR 附近遇到语法错误 bin sh Invoke postgre SQLVARCH
  • 将流拆分为具有 N 个元素的子流

    我们能否以某种方式将 Java 中的流拆分为不超过 N 个元素的子流 例如 Stream