adding elements of one array to another at a particular place in java
我有两个数组:
1 2 | byte[] array1=new byte[]{0x01,0x05}; byte[] array2=new byte[]{0x03,0x04,0x02}; |
我想在
我该怎么做?
下面的代码返回一个新数组,该数组包含从insertin到index位置的数据,然后返回从toinsert到insertin的所有数据,然后返回insertin的其余数据(此代码尚未完全测试,请为该方法实现单元测试;-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import static java.lang.System.arraycopy; import java.util.Arrays; public class MyCopy { public static void main(String[] args) { byte[] array1 = new byte[] {0x01, 0x05 }; byte[] array2 = new byte[] {0x03, 0x04, 0x02 }; // add array 2 in array 1 at index 1 byte[] inserted = insertIn(array1, array2, 1); System.out.println(Arrays.toString(inserted)); } public static byte[] insertIn(byte[] insertIn, byte[] toInsert, int position) { assert position > 0 && position <= insertIn.length; byte[] result = new byte[insertIn.length + toInsert.length]; // copy start of insertIn arraycopy(insertIn, 0, result, 0, position); // copy toInsert arraycopy(toInsert, 0, result, position, toInsert.length); // copy rest of insertIn int restIndexInResult = position + toInsert.length; int restLength = toInsert.length - position - 1; arraycopy(insertIn, position, result, restIndexInResult , restLength); return result; } } |
。
结果:[1,3,4,2,5]
您需要创建一个新的数组,大小为
一个简单的解决方案可以是:
1 2 3 4 5 6 7 8 9 10 11 12 | byte[] array1=new byte[]{0x01,0x05}; byte[] array2=new byte[]{0x02,0x03,0x04}; byte[] newArray = new byte[array1.length+array2.length]; newArray[0]=array1[0]; for(int i=1; i<newArray.length; i++){ if(i<=array2.length){ newArray[i]=array2[i-1]; }else{ newArray[i]=array1[i-3]; } } |
。
您需要第三个数组来完成此操作。
1 2 3 4 5 6 7 8 9 10 | byte[] array1=new byte[]{0x01,0x05}; byte[] array2=new byte[]{0x03,0x04,0x02}; byte[] targetArray = new byte[array1.length + array2.length]; System.arraycopy(array1, 0, targetArray, 0, array1.length); System.arraycopy(array2, 0, targetArray, array1.length, array2.length); for (byte b : targetArray) { System.out.println(b); } |
结果:
1 2 3 4 5 | 1 5 3 4 2 |
号
将
1 2 3 4 5 6 7 8 9 10 11 12 | byte[] array1=new byte[]{0x01,0x05}; byte[] array2=new byte[]{0x03,0x04,0x02}; byte[] targetArray = new byte[array1.length + array2.length]; int cap = array1.length / 2; System.arraycopy(array1, 0, targetArray, 0, cap); System.arraycopy(array2, 0, targetArray, cap, array2.length); System.arraycopy(array1, cap, targetArray, array2.length + cap, array1.length - cap); for (byte b : targetArray) { System.out.println(b); } |
结果:
1 2 3 4 5 | 1 3 4 2 5 |
。
下面是使用SystemArrayCopy的方法,它接受两个数组,并将第二个数组插入第一个数组的位置
1 2 3 4 5 6 |
您可以使用下面的代码来组合两个数组,您必须创建第三个数组,它将保存两个数组的数据:
1 2 3 4 5 6 7 8 9 |