java - 如何将数组转换为 Java 中的表?

标签 java arrays collections

假设,我有一个像这样的数组

[1,2,3,4,5,6,7,8,9,10,11,12]

是否有任何标准方法可以将其转换为具有 N 列的表格?

例如,如果N=3:

[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

或者如果N=4:

[[1,2,3,4],[5,6,7,8],[9,10,11,12]]

等等

最佳答案

在 Java 8 中,您可以使用 IntStream 生成您将提供给 Arrays.copyOfRange 的相应索引。

我回答了一个类似的问题,你可以找到逻辑 there但这里稍微修改一下,将数组作为参数:

static List<int[]> partitionIntoList(int[] arr, int pageSize) {
    return IntStream.range(0, (arr.length + pageSize - 1) / pageSize)
        .mapToObj(i -> Arrays.copyOfRange(arr, i * pageSize, min(pageSize * (i + 1), arr.length)))
        .collect(toList());
}

static int[][] partitionIntoArray(int[] arr, int pageSize) {
    return IntStream.range(0, (arr.length + pageSize - 1) / pageSize)
        .mapToObj(i -> Arrays.copyOfRange(arr, i * pageSize, min(pageSize * (i + 1), arr.length)))
        .toArray(int[][]::new);
}

请注意,如果 pageSize 没有完美划分输入的大小,则将剩余的元素添加到最后一个 int 数组中。

例如,

partitionIntoArray(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, 4);

输出:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

如果页面大小为 5,则最后两个元素将添加到第三个数组:

[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12]]

希望对您有所帮助! :)

关于java - 如何将数组转换为 Java 中的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29523812/

相关文章:

java - 如何编写该程序以包含字符串的最后一个字母?

scala - 将Iterable.sliding输出为元组

java - ArrayList 的 toArray() 方法无法正常工作

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

c# - 使用循环从列表中获取唯一值,然后添加另一个值

java - 性能 ConcurrentHashmap 与 HashMap

java - 将 OkHttp 添加到我的项目中

java - 如何使 Eclipse 引用远程存储库中的最新版本而不是工作区中的当前版本?

java - 将三中位数实现到通用快速排序中

c++ - Qt 信号和槽发送结构数组