Java - 将ArrayList <object []>转换为Object [] []?</object []>

时间:2013-07-18 21:22:59

标签: java arrays casting arraylist

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

ArrayList<Object[]> array;

Object[][] data;

2 个答案:

答案 0 :(得分:6)

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

对象[]内部被视为一种对象本身。然后将它们放入它们自己的数组中,从而形成一组对象的数组对象,或者只是一个二维数组。

答案 1 :(得分:1)

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

(((ClassA的)CLASSB)。方法())

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

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

例如:

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

objectArray2D[i] = objectArray;

以下是您的问题的一点,如果您创建一个多维数组,为什么只能为它提供一个数组实例。基本上你在上面的例子中创建的是一个数组内部的数组,因为你只给它一个数组内部所有对象的数组索引就像你有一个数组一样,但有一个额外的位置。让我解释一下:

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

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

通过对一个数组使用多维数组,您没有任何好处。如果您要求2D数组索引[1] [0],您将收到一个越界异常。

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

在任何情况下,完全按照您要做的最终解决方案如下:

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

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

同样值得注意的是,ArrayList的目的是拥有一个2D数组,而不必解析索引。

请任何人随时纠正错误的部分&lt;&lt;还在学习。