有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个数组,例如:

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 = {item1_1, item1_2, item2_1, item2_2, item1_3, item2_3, item2_4}

所以我想从每个子数组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) 个答案

  1. # 1 楼答案

    你不必让它递归。一个循环到分拣机阵列大小的两倍就足够了

        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,您必须首先找到分拣机阵列,在此循环之后,您必须处理较长阵列中的剩余元素