Java: преобразовать список массива в массив массива - PullRequest
6 голосов
/ 27 апреля 2011

У меня есть такой список:

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

и на объекте, как это:

MyObject[][] myMatrix;

Как я могу назначить «список» myMatrix?

Я не хочу циклически перебирать список и присваивать элемент за элементом MyMatrix, но я хочу назначить его напрямую (с изменениями оппортуны), если это возможно. Спасибо

Ответы [ 4 ]

8 голосов
/ 27 апреля 2011

Вы можете использовать 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

3 голосов
/ 27 апреля 2011

В следующем фрагменте показано решение:

// 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));

Попробуйте его на ideone

0 голосов
/ 27 апреля 2011

Вы можете сделать это так:

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]]

при условии, что пункт выглядит следующим образом:

public class Item {

    private String name;

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

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

}
0 голосов
/ 27 апреля 2011

Используйте toArray () или toArray (T []) метод LinkedList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...