如何使用java streams在每次迭代中使用当前和下一个对象对列表进行分区?

如何使用java streams在每次迭代中使用当前和下一个对象对列表进行分区?,java,list,java-8,java-stream,Java,List,Java 8,Java Stream,我希望在每次迭代中从ArrayList中获取接下来的两个对象。我知道我们可以使用传统的for循环来实现这一点,但我只是想知道是否还有其他方法可以做到这一点 例如,如果我有以下列表 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6); 任何帮助都将不胜感激 使用IntStream可以根据索引迭代列表,并将结果收集到列表 List<List<Integer>> res = IntStream.range(0,

我希望在每次迭代中从ArrayList中获取接下来的两个对象。我知道我们可以使用传统的for循环来实现这一点,但我只是想知道是否还有其他方法可以做到这一点

例如,如果我有以下列表

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);

任何帮助都将不胜感激

使用
IntStream
可以根据索引迭代
列表
,并将结果收集到
列表

List<List<Integer>> res = IntStream.range(0, list.size()-1)
                                   .mapToObj(i->Arrays.asList(list.get(i),list.get(i+1)))
                                   .collect(Collectors.toList());

谢谢你的回复。看起来这样就行了。如果有一个包含非整数数据类型的列表(例如,如果我有一个自定义数据对象),如何实现类似的输出?遵循相同的方法,用自定义对象列表替换整数列表将得到相同的结果。-@冬日酒店
List<List<Integer>> res = IntStream.range(0, list.size()-1)
                                   .mapToObj(i->Arrays.asList(list.get(i),list.get(i+1)))
                                   .collect(Collectors.toList());
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]