首页 >Java >java教程 >我们如何从元素流中高效地生成连续的元素对?

我们如何从元素流中高效地生成连续的元素对?

Susan Sarandon
Susan Sarandon原创
2024-12-15 12:54:25875浏览

How Can We Efficiently Generate Successive Pairs from a Stream of Elements?

流中的连续对

给定一个像 {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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn