java:将数组列表转换为数组数组

时间:2011-04-27 11:52:24

标签: java arrays list multidimensional-array

我有一个这样的清单:

List<MyObject[]> list= new LinkedList<MyObject[]>();

和像这样的对象:

MyObject[][] myMatrix;

如何将“列表”分配给“myMatrix”?

我不想循环遍历列表并逐个元素地分配给MyMatrix,但是如果可能的话我想直接分配它(使用oppurtune修改)。 感谢

6 个答案:

答案 0 :(得分:8)

您可以使用toArray(T[])

import java.util.*;
public class Test{
    public static void main(String[] a){ 
        List<String[]> list=new ArrayList<String[]>();
        String[][] matrix=new String[list.size()][];
        matrix=list.toArray(matrix);
    }   
}

Javadoc

答案 1 :(得分:3)

以下代码段显示了一个解决方案:

// create a linked list
List<String[]> arrays = new LinkedList<String[]>();

// add some trivial test data (note: arrays with different lengths)
arrays.add(new String[]{"a", "b", "c"});
arrays.add(new String[]{"d", "e", "f", "g"});

// convert the datastructure to a 2D array
String[][] matrix = arrays.toArray(new String[0][]);

// test output of the 2D array
for (String[] s:matrix)
  System.out.println(Arrays.toString(s));

Try it on ideone

答案 2 :(得分:0)

使用LinkedList的toArray()toArray(T[])方法。

答案 3 :(得分:0)

你可以这样做:

public static void main(String[] args) {
    List<Item[]> itemLists = new ArrayList<Item[]>();
    itemLists.add(new Item[] {new Item("foo"), new Item("bar")});
    itemLists.add(new Item[] {new Item("f"), new Item("o"), new Item("o")});
    Item[][] itemMatrix = itemLists.toArray(new Item[0][0]);
    for (int i = 0; i < itemMatrix.length; i++)
        System.out.println(Arrays.toString(itemMatrix[i]));
}

输出

[Item [name=foo], Item [name=bar]]
[Item [name=f], Item [name=o], Item [name=o]]

假设Item如下:

public class Item {

    private String name;

    public Item(String name) {
        super();
        this.name = name;
    }

    @Override
    public String toString() {
        return "Item [name=" + name + "]";
    }

}

答案 4 :(得分:0)

让我们假设我们有一个'int'数组列表。

List<int[]> list = new ArrayList();

现在将其转换为'int'类型的2D数组,我们使用'toArray()'方法。

int result[][] = list.toArray(new int[list.size()][]);

我们可以将其进一步概括为-

List<T[]> list = new ArrayList();
T result[][] = list.toArray(new T[list.size()][]);

这里,T是数组的类型。

答案 5 :(得分:0)

要使用数组的转换列表。 List.Array()

然后使用System.arraycopy复制到2d数组对我来说很好

Object[][] destination = new Object[source.size()][];

System.arraycopy(source, 0, destination, 0, source.size());