[英]ArrayList of Arrays to 2d Array in Java
我最近在將數組的ArrayList轉換/轉換為2d數組時遇到問題。 我在這個網站上找到一個答案,告訴我使用
List<Object[]> arrayList;
// initialize and fill the list of arrays
// all arrays have the same length
Object[][] array2d = arrayList.toArray(new Object[][] {});
那行得通,但我在Google上搜索了一下,並在某處閱讀了認為是不良做法的內容。 我仍然使用它,因為它是唯一實際起作用的行變體。
它實際上是什么意思,為什么它被認為是不好的? 我不明白[][]{}
位。 我猜想您將一個空的但已初始化的Object[][]
傳遞給.toArray()
方法?
我找不到任何理由將您的示例視為不良做法!
我唯一看到的是它將創建一個數組,但不會使用它。
您可以看到一個Javadoc:
返回一個數組,該數組按適當順序(從第一個元素到最后一個元素)包含此列表中的所有元素; 返回數組的運行時類型是指定數組的運行時類型。 如果列表適合指定的數組,則將其返回。 否則,將使用指定數組的運行時類型和此列表的大小分配一個新數組。
可以在方法源代碼上進行驗證:
@SuppressWarnings("unchecked")
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
因此,您要創建的是一個空數組,然后該方法將創建另一個數組。
Object[][] array2d = arrayList.toArray(new Object[arrayList.size()][]);
關於[][]{}
您的猜測是正確的。
這里的一些技巧
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.