Java 如何将装箱类型的二维数组转换为相应基元类型的二维数组?

Java 如何将装箱类型的二维数组转换为相应基元类型的二维数组?,java,Java,编译器说不兼容的类型:Integer[][]无法转换为int[][]。。。 如何解决这个问题?您必须迭代列表并将每个元素转换为int原语。数组在Java中是特殊类型的对象,因此int[][]和Integer[][][]是完全不相关的。这就像试图将Foo投射到Bar。但是,Java确实支持从Integer到int的隐式强制转换。这就是所谓的自动装箱,您可以在下面的primitives[i][j]=documents[i][j]行看到它的作用,其中单个整数隐式转换为一个基元int Integer[]

编译器说不兼容的类型:Integer[][]无法转换为int[][]。。。
如何解决这个问题?

您必须迭代列表并将每个元素转换为int原语。数组在Java中是特殊类型的对象,因此
int[][]
Integer[][][]
是完全不相关的。这就像试图将
Foo
投射到
Bar
。但是,Java确实支持从
Integer
int
的隐式强制转换。这就是所谓的自动装箱,您可以在下面的
primitives[i][j]=documents[i][j]
行看到它的作用,其中单个
整数
隐式转换为一个基元
int

Integer[][] documents = { {1, 4, 3, 2, 3, 1, 4, 3, 2, 3, 1, 4, 3, 2, 3, 6},
        {2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2},
        {1, 6, 5, 6, 0, 1, 6, 5, 6, 0, 1, 6, 5, 6, 0, 0},
        {5, 6, 6, 2, 3, 3, 6, 5, 6, 2, 2, 6, 5, 6, 6, 6, 0},
        {2, 2, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 0},
        {5, 4, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2}};
int[][] convertDocument = documents;
int[]]convertToPrimitives(整数[]]documents){
int[][]原语=新的int[documents.length][];

对于(int i=0;it没有一个方便的方法或内置方法,您必须通过嵌套for loops.Yup来完成。您必须在嵌套循环中循环它,并使用类似for(Integer[]integers:documents){for(Integer-Integer:integers){}作为循环。在嵌套循环中,然后将整数转换为int并赋值。我很好奇…为什么不使用ArrayList之类的东西?重新打开。不是重复的。我没有看到任何与2D数组有关的答案。代码的第六行缺少分号。您假设它是一个矩阵。它似乎不正确做一个矩阵。
int[][] convertToPrimitives(Integer[][] documents) {
    int[][] primitives = new int[documents.length][];
    for (int i=0;i<documents.length;i++) {
        primitives[i] = new int[documents[i].length];
        for (int j=0;j<documents[i].length;j++) {
            primitives[i][j] = documents[i][j];
        }
    }
    return primitives;
}