簡體   English   中英

Java中2D數組的ArrayList

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM