2012-05-25 3 views
0

У меня есть этот ArrayList:Java: ArrayList^2 к ИНТ [] []

ArrayList<ArrayList<Integer>> temporary = new ArrayList<ArrayList<Integer>>(); 

Некоторые, как мне нужно, чтобы преобразовать его в междунар [] []

У меня есть какие-то петли правильно?

   for(ArrayList<Integer> item: temporary) { 
        //Here?? 

       } 

Cheers!

Я застрял, потому что массивы arent динамические (или то, что вы называете).

+0

Подсказка: вам нужны две петли. – jn1kk

+0

Ницца! Не думал об этом! Итак, теперь у меня есть все целые числа ... но массивы arent dynamic, нет метода array.add :( – AndroidXTr3meN

+0

@ AndroidXTr3meN Вы правы в массивах, но вы можете легко добавить к ArrayList или другому типу List. – kevin628

ответ

5

Это должно работать:

final int N = temporary.size(); 
int[][] a = new int[N][]; 
for (int i = 0; i < N; ++i) { 
    final ArrayList<Integer> item = temporary.get(i); 
    final int M = item.size(); 
    a[i] = new int[M]; 
    for (int j = 0; j < M; ++j) { 
     a[i][j] = item.get(j); // assumes no null elements! 
    } 
} 
+0

так же, как и предложение (и некий косвенный вопрос), не могли бы вы сделать item.toArray() и передать массив Integer в качестве параметра вместо вложенного? – Gamb

+1

@Gamb - Это сработает, но тогда у вас будет Массив 'Integer', а не массив' int', такой как OP. К сожалению, у Java нет удобного преобразования unbox для массивов вложенных примитивов, вы все равно будете зацикливаться на результате с помощью результата Integer []. –

+0

I см., спасибо за очищение, что мало сомневается. – Gamb

1

Если вы в состоянии сделать делать с Integer [] [] (объект обертку межд), вы можете сделать это в одном цикле (есть внутренняя петля, но он скрыт от вас).

ArrayList<ArrayList<Integer>> temporary = new ArrayList<ArrayList<Integer>>();    
    Integer[][] integers = new Integer[temporary.size()][]; 
    int i = 0; 
    for(ArrayList<Integer> l : temporary) 
    { 
     integers[i++] = l.toArray(new Integer[l.size()]);   
    } 
+0

OP спросил, как сгенерировать 'int [] []', а не 'Integer [] []'. –

+0

вправо, я добавлю оговорку ... –

Смежные вопросы