给定一个像 {0, 1, 2, 3, 4} 这样的基元或对象流,我们如何轻松地将其转换为连续对,如下图所示?
{new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4)}
深入研究解决方案
虽然 Java 8 流库擅长将流划分为可管理的块以进行并行处理,但它对有状态管道阶段提出了挑战。检索当前流元素的索引或访问相邻元素是显着的限制。
为了规避这些限制,我们经常采用一种涉及利用索引来驱动流的技术。下面是我们如何使用这种方法生成对的一瞥:
代码片段:
IntStream.range(1, arrayList.size()) .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i))) .forEach(System.out::println);
阐述解决方案:
在这个例子中,我们迭代索引从 1 开始的 ArrayList,保证对于每个索引 i,我们可以访问 arrayList.get(i-1) 和 arrayList.get(i)。代码的关键是mapToObj函数,它将每个索引转换为包含相邻元素的Pair。
限制和扩展:
虽然这种方法对于有限流存储在随机访问集合中,它不适用于无限流。但是,管道可以并行执行,从而提供性能优势。
以上是我们如何从元素流中高效地生成连续的元素对?的详细内容。更多信息请关注PHP中文网其他相关文章!