java - 更改 Java 数组的维数

标签 java arrays

有没有办法改变数组的维数,即这样做

int[][] i = new int[3][3];

但是像这样使用它

getArray(i); //where getArray only accepts one dimensional arrays

最佳答案

您无法更改 Java 数组或数组类型的维数。

但是您可以利用 Java 数组是一个对象这一事实...和子类型...并声明一个 getArray 方法,如下所示:

 Object getArray(Object[], ...) { .... }

您可以在 int[][] 实例上调用此方法,但需要运行时类型转换才能将结果转换为 int[]

例如:

Object getArray(Object[] array, int i) { return array[i]; }

int[][] big = new int[3][3];
int[] slice = (int[]) getArray(big, 0);
<小时/>

另一方面,如果您确实询问如何将多维数组展平为一维数组,则 getArray 方法需要分配一个新数组,从原始数组中填充它并返回它。

请注意,您将返回一个与原始数组未连接的全新数组。复制 N x N .... x N 数组的成本很高。

了解更多详情:Flatten nested arrays in java

关于java - 更改 Java 数组的维数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50430942/

相关文章:

c - 返回常用字符

arrays - ruby 返回存在于每个嵌套数组中的值数组

java - itext- 无法使用另一个 USB token 签署 pdf

java - 如何使用 JGit API 获取 git 标签的名称

java - 使用 yamlbeans 反序列化嵌套类

php - 通过比较单元格 Y 和单元格 Z 中的信息来获取单元格 X 中的 mysql 值?

c++ - C++中动态 boolean 数组的默认值

php - 如何用数据库中的数据填充 session 数组?

java - 如何将 JSON null 反序列化为 NullNode 而不是 Java null?

java - 删除 Spring Boot 上对 "/"的直接访问