一次从流中选取 2 个元素[重复]

2023-12-22

假设我们有一个集合(或流?)

{"1","2","3","4"...}

现在我们想要取两个元素并像这样组成一对

{{"1","2"}, {"2","3"},{"3","4"}..}

我们知道如何以丑陋的方式做到这一点(for 循环)。

我想知道我们如何使用 java 8 流来做到这一点?

因为 java 流和反应式扩展中的方法几乎相同(都是 monad),我认为可能有类似 RX 的东西.pick(2)当 2 个元素到达时会触发事件...


它也不漂亮,但你可以用收藏家来做。我使用了内部带有数组的 ArrayList,但如果需要,您可以使用不同的中间集合类型。

我在这里所做的是一个收集器,它将每个项目添加为添加到累加器的最后一个数组上的第二个项目,并将其作为将添加到累加器的新数组上的第一个项目。

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);

ArrayList<Integer[]> pairs =
    stream.collect(
        () -> new ArrayList<>(), 
        (acc, next) -> {
            if(acc.isEmpty()) {
                acc.add(new Integer[] {next, null});
            } else {
                acc.get(acc.size() - 1)[1] = next;
                acc.add(new Integer[] {next, null});
            }
        },
        ArrayList::addAll
    );

pairs.forEach(a -> System.out.println(a[0] + ", " + a[1]));

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

一次从流中选取 2 个元素[重复] 的相关文章

随机推荐

  • 打开本机应用程序。来自野生动物园

    我知道 iPhone 应用程序 像沙箱一样操作 这意味着他们无权访问其他应用程序的文件 我还成功地使用以下命令从 Native App 在 Safari 中打开了一个网站 openURL NSURL URLWithString Websit
  • 禁用 web.config 继承?

    我的网站根目录中有一个内容管理应用程序 我尝试在子文件夹下使用另一个应用程序 计费应用程序 不幸的是 根站点的 web config 干扰了子应用程序 有没有办法只禁用子文件夹的 web config 继承 Update 如链接所示史蒂芬
  • 可以从 UIView 复制 CALayer 吗?

    这是我的设置 我有一个 CALayer 我想向其中添加子层 我通过设置 UILabel 创建这些子层 然后将 UILables 层添加到我的主层 当然 这会使沉重的 UILabel 对象在后台徘徊 是否可以从 UIView 获取图层及其所有
  • 在 OData 中,有没有办法按数组中的第一个元素进行排序?

    我有一个 OData 4 端点 用于在表中显示数据 其中一列包含一组由我的元素内的字符串数组连接而成的数据 有没有办法按数组中的第一个元素排序 我的元素可能如下所示 FirstName John MiddleNames Harry Bobb
  • 如何获取 Windows 8 应用程序的方法名称

    如何在 win 8 WinRT 应用程序中获取当前方法名称 早期在 wp7 中我们可以使用System Reflection MethodBase GetCurrentMethod Name但它不再存在了 谢谢 是的 NETCore 缺少很
  • 如何从命令行使用 GIMP 将 XCF 转换为 PNG?

    作为构建过程的一部分 我需要将许多 XCF GIMP 的本机格式 图像转换为 PNG 格式 我确信使用 GIMP 的批处理模式应该可以实现这一点 但我已经忘记了我以前知道的所有 script fu 我的输入图像有多个图层 因此我需要相当于
  • 将数据传递给 subprocess.check_output

    我想调用一个脚本 将字符串的内容通过管道传输到其标准输入并检索其标准输出 我不想接触真正的文件系统 所以我无法为其创建真正的临时文件 using subprocess check output剧本写什么我都能得到 我怎样才能将输入字符串放入
  • 尽可能快地获取大型文本文件中包含字符串的所有行?

    在Powershell中 如何尽可能快地读取和获取巨大文本文件 大约200000行 30 MB 中包含特定字符串的最后一行 或所有行 我在用着 get content myfile txt select string pattern my
  • GWT Requestfactory 性能建议

    我发现使用 GWT requestfactory 时性能非常糟糕 例如 一个请求需要我的服务层 2 秒才能完成 而 GWT 则需要 20 秒才能序列化 我的服务返回约 100 个实体代理 这些对象中的每一个都有 4 个 ValueProxi
  • 如何生成一组随机颜色,其中没有两种颜色几乎相似?

    我目前使用以下函数来生成颜色的随机十六进制表示 function getRandomColor max r 192 max g 192 max b 192 if max r gt 192 max r 192 if max g gt 192
  • 为什么 VS2010 调试器会挂起?

    这种情况刚刚开始发生在我的工作箱和家里 在 Visual Studio 2010 中 我将启动调试会话 程序将运行到第一个断点 仅此而已 我可以随心所欲地按 F10 11 5 什么都不会发生 退出的唯一方法是 Shift F5 这让我发疯
  • 无法设置访客内存“android_arm”:参数无效

    我花了几天时间尝试启动任何 Android 程序 即使 Hello World 也给我同样的错误 2014 10 28 18 07 14 android19 Android Launch 2014 10 28 18 07 14 androi
  • XDocument 中innerXml 和outerXml 的对应项是什么?

    我正在尝试将一些使用 XmlDocument 类的代码重构为 Linq To Xml 但是 我不确定XDocument 中innerXml 和outerXml 的对应项是什么 根据 MSDN InnerXml http msdn micro
  • 根据选择值禁用 Angular Reactive 表单输入

    我有一个表单 使用 Angular Material 我想根据选择值禁用某些输入字段 我的代码如下所示 HTML
  • 如何查看Excel文件的XML形式?

    如何查看 Excel 的 XML 形式 xlsx file XLSX 文件只是 ZIP 文件 因此请使用您最喜欢的 ZIP 工具解压缩它们
  • 如何通过java代码访问和创建azure存储帐户的生命周期规则/生命周期管理策略

    我想创建一个生命周期规则 or 生命周期管理政策对于特定的 azure 存储帐户 通过java代码 不通过 terraform 或 azure 门户 任何适当的代码片段或参考都会有所帮助 提前致谢 如果您想管理 Azure Blob 存储生
  • xcode Storyboard - ibtoold 解档异常

    例外的是 CompileStoryboard Catwall en lproj MainStoryboard storyboard cd Users guvenozyurt Desktop git catwall ios setenv IB
  • 智能卡读卡器访问时出现未知错误 0x16

    我正在尝试更改 ACR1252U 上的蜂鸣器持续时间 API 链接 http www acs com hk download manual 6402 API ACR1252U 1 09 pdf http www acs com hk dow
  • 在 keras 中微调预训练模型

    我想在 keras 中使用预训练的 imagenet VGG16 模型 并在顶部添加我自己的小型卷积网络 我只对功能感兴趣 对预测不感兴趣 from keras preprocessing image import ImageDataGen
  • 一次从流中选取 2 个元素[重复]

    这个问题在这里已经有答案了 假设我们有一个集合 或流 1 2 3 4 现在我们想要取两个元素并像这样组成一对 1 2 2 3 3 4 我们知道如何以丑陋的方式做到这一点 for 循环 我想知道我们如何使用 java 8 流来做到这一点 因为