一次从流中选择2个元素 [英] pick 2 elements from stream at a time

查看:138
本文介绍了一次从流中选择2个元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Suppose we have a collection (or stream?)

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

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

now we want to take two elements and compose a pair like this

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

我们知道如何以丑陋的方式(for loop)。

We know how to do that the ugly way (for loop).

我想知道我们如何用java 8流做这个?

I wonder how do we do this with java 8 streams?

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

Because approaches in java streams and reactive extensions are pretty much same (both are monads) I thought there might be something alike RX .pick(2) which would trigger event when 2 elements arrive...

推荐答案

可以使用 IntStream.range 循环流 - 类 - 的方式。

It is possible to use the IntStream.range to loop in a stream-kind-of-way.

String[] str = {"1", "2", "3", "4"};
final String[][] result = IntStream.range(0, str.length - 1)
        .mapToObj(i -> new String[]{str[i], str[i + 1]})
        .toArray(String[][]::new);

结果包含 {{1,2},{ 2,3},{3,4}}

这篇关于一次从流中选择2个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆