如果可能的话,使用 flatMap 将列表拆分为 java 中的子列表

And*_*nza 4 java split functional-programming list java-stream

这是我的清单:

List<Integer> mylist = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12);
Run Code Online (Sandbox Code Playgroud)

假设我的列表总是偶数,那么我想将其分成 6 个相等的部分。

列出为草图:

[1,2,3,4,5,6,7,8,9,10,11,12]
Run Code Online (Sandbox Code Playgroud)

输出草图:

[[1,2][3,4],[5,6],[7,8],[9,10],[11,12]]
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我更喜欢 Java 8 流的解决方案flatMap

Mur*_*nik 5

鉴于“子列表”的大小均相等,并且您可以将列表划分为相同大小的精确子列表,您可以计算所需的大小,然后将 an 映射IntStream到每个子列表的起始索引并使用它来提取它们:

List<Integer> mylist = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12);
int size = mylist.size();
int parts = 6;
int partSize = size / parts;
List<List<Integer>> result = 
    IntStream.range(0, parts)
             .mapToObj(i -> mylist.subList(i * partSize, (i + 1) * partSize)))
             .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

编辑: @Turing85 慷慨提供的
IdeOne 演示