首页 > 解决方案 > Java 8获取列表连续数字的功能方式

问题描述

例如,我有一个整数列表,如List(1,2,3,4,5,6,7)

我想在 Java 8 中获得所有连续 3 个数字的组合,以更实用的方式学习 Java 8。(我知道如何以命令式的方式进行)

所以上面的结果可以是一个列表列表:

List(List(1,2,3), List(2,3,4), List(3,4,5), List(4,5,6), List(5,6,7))

谢谢

标签: javajava-8functional-programming

解决方案


您可以List.subList在迭代它时使用它:

final int subListSize = 3;
List<Integer> list = List.of(1, 2, 3, 4, 5, 6, 7);
List<List<Integer>> sublists = IntStream.rangeClosed(0, list.size() - subListSize)
            .mapToObj(i -> list.subList(i, i + subListSize))
            .collect(Collectors.toList());

推荐阅读