2013-03-31 3 views
0

Это мой код:Как преобразовать Список <Список <String[]>> в строку [] [] []?

List<List<String[]>> myBigList=new ArrayList<List<String[]>>(); 
    String[] s11={"A","30"}; 
    String[] s12={"B","20"}; 
    List<String[]> l1=new ArrayList<String[]>(); 
    l1.add(s11); 
    l1.add(s12); 

    String[] s21={"B","10"}; 
    String[] s22={"B","20"}; 
    List<String[]> l2=new ArrayList<String[]>(); 
    l2.add(s21); 
    l2.add(s22); 

    String[] s31={"C","2"}; 
    String[] s32={"A","10"}; 
    String[] s33={"A","3"}; 
    List<String[]> l3=new ArrayList<String[]>(); 
    l3.add(s31); 
    l3.add(s32); 
    l3.add(s33); 

    myBigList.add(l1); 
    myBigList.add(l2); 
    myBigList.add(l3); 

    String[][] test2DArr=new String[2][myBigList.size()]; 
myBigList.toArray(test2DArr); 

При запуске он сказал "[ERROR] - Uncaught исключение спасся" Так как преобразовать список> в String [] []?

+6

Во-первых, у вас нет списка списка 'String', у вас есть список из списка 'String []'. Там есть существенная разница. – Makoto

+2

Первый вопрос, который следует задать, - почему вы хотите использовать String [] []? –

+5

'list - 1d array',' list in list - 2d array', 'array in list in list' - ** WTF ** !! – SudoRahul

ответ

1

Предполагая, что (это не так просто ...), что кто-то будет когда-либо сталкиваться с подобной проблемой, рабочий раствор для преобразования List<List<String[]>> в String[][][] будет:

// List<List<String[]>> myBigList = new ArrayList<List<String[]>>(); 
String[][][] amyBigArray = new String[myBigList.size()][][]; 
for (int i = 0; i < myBigList.size(); i++) { 
    int innerSize = myBigList.get(i).size(); 
    String[][] innerArray = new String[innerSize][]; 
    for (int j = 0; j < innerSize; j++) { 
     innerArray[j] = myBigList.get(i).get(j); 
    } 
    amyBigArray[i] = innerArray; 
} 

Это может быть напечатан с:

for (String[][] strings : amyBigArray) { 
    for (String[] strings3 : strings) { 
     System.out.println(Arrays.toString(strings3)); 
    } 
} 

и это дает правильный выход для заданного на входе вопроса:

[A, 30] 
[B, 20] 
[B, 10] 
[B, 20] 
[C, 2] 
[A, 10] 
[A, 3] 
+0

Thax you very much – Tom

1

Если я правильно понял, это то, что вы хотите (более или менее)

List<String> list = ..; 
String[] array = list.toArray(new String[list.size()]); 

Но в любом случае. Ваша логика совершенно неверна, у вас есть массив в массиве в массиве в массиве массива в массиве в массиве массива в массиве. .. вы меня поняли?

+0

String [] s11 = {"A", "30"}; \t \t String [] s12 = {"B", "20"}; \t \t Список l1 = новый ArrayList (); \t \t l1.add (s11); \t \t l1.add (s12); \t \t String [] [] test2DArr = new String [2] [l1.size()]; \t \t l1.toArray (test2DArr); – Tom

+2

@Tom Редактировать свой вопрос с подробностями ЧТО вы пытаетесь сделать в своем коде, программа, поскольку вы действительно не объяснили, что вы пытаетесь сделать –