如何使用java streams在每次迭代中使用当前和下一个对象对列表进行分区?
我希望在每次迭代中从ArrayList中获取接下来的两个对象。我知道我们可以使用传统的for循环来实现这一点,但我只是想知道是否还有其他方法可以做到这一点 例如,如果我有以下列表如何使用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,
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]]