Java 这项作业是如何进行的。。?

Java 这项作业是如何进行的。。?,java,collections,Java,Collections,我遇到了一件我真的很难理解的新事物。。这就是我所做的,效果非常好 Vector<String[]> v = new Vector<String[]>(); v.add(s); String[][] s1 = new String[v.size][] v.toArray(s1); Vector v=new Vector(); v、 添加(s); 字符串[][]s1=新字符串[v.size][] v、 toArray(s1); 我的问题是

我遇到了一件我真的很难理解的新事物。。这就是我所做的,效果非常好

    Vector<String[]> v = new Vector<String[]>();
    v.add(s);

    String[][] s1 = new String[v.size][]
    v.toArray(s1);
Vector v=new Vector();
v、 添加(s);
字符串[][]s1=新字符串[v.size][]
v、 toArray(s1);
我的问题是,即使方法toArray()只使用一维数组作为参数,它是如何工作的。。? 我对java编程不太在行,因此正在寻求解释


提前感谢。

很简单:
v
是一维数组的向量,
toArray
返回向量中任何元素的一维数组(在本例中为一维数组)。结果是1-D数组中的1-D数组,通常称为2-D数组。

Java中只有真正的1-D数组-看起来像是一个多维数组,实际上只是一个数组数组

因此,如果我们忽略字符串[]本身是一个数组这一事实,并将其替换为
StringArray
,则我们得到以下代码:

Vector<StringArray> v = new Vector<StringArray>();
v.add(s);

StringArray[] s1 = new StringArray[v.size()];
v.toArray(s1);
Vector v=new Vector();
v、 添加(s);
StringArray[]s1=新的StringArray[v.size()];
v、 toArray(s1);
这看起来并不奇怪,对吧
s1
是字符串数组的数组,
v
是字符串数组的向量
v.toArray()
将字符串数组数组作为参数,因此我们可以使用
s1
作为参数。

toArray()接受一维对象数组

字符串数组是一个对象

s1是字符串数组的数组

QED

参数将“String[][]”视为“String[]”对象的“一维数组”

在本例中,Vector.toArray(T[]a)接受一个T的数组。让我们将泛型T替换为类型“String[](注意String[]是一个对象)。这意味着Vector.toArray(String[][]a)将String[][]作为参数