0

好的,所以这是我面临的一个小问题 - Java 中是否有一种简单的方法可以转换

ArrayList<Object[]> array;

Object[][] data;

?

4

2 回答 2

6
Object[][] data=array.toArray();

Object[] 的内部本身被视为一种对象。然后将它们放入自己的数组中,导致对象的数组对象数组,或者简单的二维数组。

于 2013-07-18T21:23:46.493 回答
1

铸造不是您正在寻找的解决方案。转换本质上允许您使用转换为特定类类型的方法。一个演员表的例子:

(((ClassA)classB).method())

因此,可以将返回值放置在包含 method() 的实例化 classB 对象的 ClassA 对象内。

另一方面,您想要做的是创建一个多维数组或二维数组。这本质上是一个数组数组,其中 arrayA[i] = arrayB[];

例如:

Object[] objectArray = new Object[5];
Object[][] = objectArray2D = new Object[][];

objectArray2D[i] = objectArray;

不过,这是您的问题的一点,如果您创建一个多维数组,为什么只提供一个数组实例。本质上,您将在上面的示例中创建一个数组内的数组,并且由于您将只给它 1 个数组索引,因此数组内的所有对象的索引将与您拥有一个数组相同,但只有一个额外的安置。让我解释:

objectArray[0] == 您放置在 objectArray 的第一个插槽上的对象

而 objectArray2D[0][0] == 与 objectArray[0] 中的对象完全相同的对象

通过对一个数组使用多维数组,您不会获得任何优势。如果您要向二维数组询问索引 [1][0],您将收到越界异常。

最后,我建议您创建一种特定形式的数组,例如 int[] 或 string[]。Object[] 数组的问题在于,您可以将任何被视为 Object 的内容存储到数组中,从而允许在一个数组中存在不同类型的对象的潜在集群。例如你可以有一个 objectArray[0] = int 1; 和 objectArray[1] = 字符串一;除非您想非常具体地使用数组,否则最好使用一种 Object 类型作为数组。

无论如何,完全按照您的意愿进行操作的最终解决方案如下:

ArrayList<Object[]> array;
Object[][] data;

public void changeToAnArray(ArrayList<Object[]> array, Object[][] data)
{
    this.array = array.toArray();
    this.data[0] = array;
}

还要注意 ArrayList 的要点,本质上是一个二维数组,而不必解析索引。

请任何人随时纠正我在<<仍在学习中的错误部分。

于 2013-07-18T22:01:40.603 回答