迭代数组数组的最佳实践&创建另一个数组

时间:2016-07-13 00:19:17

标签: java arraylist

我有一个阵列数组,例如:

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;
}

但我想知道有更好的方法吗?

1 个答案:

答案 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;
    }

这不是原因,你必须先找到分类器数组,然后在这个循环后你必须处理较长数组中的其余元素。