2016-07-13 4 views
-3

У меня есть массив массивов, таких как:лучшая практика перебрать массив массивов и создать другой массив

Arraylist<myObjec> subArray = {item1_1,item1_2, item1_3} 
Arraylist<myObjec> subArray = {item2_1,item2_2, item2_3, item2_4} 

Arraylist<myObjec> mainArray = {subArray_1,subArray_2} 

Я хочу создать newArray быть что-то вроде этого:

newArray = {item1_1, item1_2, item2_1, item2_2, item1_3, item2_3, item2_4} 

Поэтому я хочу взять сегмент элемента, скажем, получить от каждого элемента subArray 2 и вернуться через массив массивов до тех пор, пока я не закончу.

Каковы будут наилучшие методы для достижения этого результата?

Update:

Я попытался с этой рекурсивной функции:

try { 
    postList = CreateOneListFromSubArrays(mySmoraTemp, postList, 0, countSublArray(mySmoraTemp), 2); 
} catch (Exception c){ 

} 

private ArrayList<MyItemClass> CreateOneListFromSubArrays (ArrayList<SmoraItem[]> _array, ArrayList<SmoraItem> result,int n, int _size, int _sectionSize){ 
    if(result.size() < _size){ 
    for (int i=0; i<_array.size(); i++){ 
     for (int j=n; j<n+_sectionSize; j++) { 
     result.add(i, _array.get(i)[n+j]); 
     } 
    } 
    n += 1; 
    CreateOneListFromSubArrays(_array, result, n, _size, _sectionSize); 
    } 
    return result; 
} 

но мне интересно, есть ли лучший способ?

+0

Вы пытались каким-то образом выполнить это? –

+0

Код, который вы предоставили, никогда не будет компилироваться. Много проблем с ним. Как говорит Дарлисон, дайте нам более конкретный пример того, что вы пробовали. – nasukkin

+0

Это не специфичный для Android вопрос, а относится к вопросам Java ... –

ответ

0

Вам не нужно делать это рекурсивным. И один для цикла в два раза больше размера сортировщика.

int array1[] = {1,2,3,4,5,6,7,8,9,8,7,5}; 
    int array2[] = {11,22,33,44,55,66,77,88}; 
    int result[] = new int[array1.length + array2.length]; 
    int y = 0; 
    for(int x = 0; x < array2.length * 2 ;) { // twice of the sorter's length 

     result[x++] = array1[y]; 
     result[x++] = array1[y + 1]; 
     result[x++] = array2[y]; 
     result[x++] = array2[y + 1]; 
     y+=2; 
    } 

Это не soution, вы должны найти массив сортировщика первого и после этого цикла вы должны обработать оставшиеся элементы в более массиве.

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