我有一个阵列数组,例如:
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项目中获取一段项目,然后返回数组,直到我完成。
接近此结果的最佳做法是什么?
更新:
我试过这个递归函数:
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)
你不必让它递归。一个for循环到分拣机阵列大小的两倍就足够了。
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;
}
这不是原因,你必须先找到分类器数组,然后在这个循环后你必须处理较长数组中的其余元素。