我有两个数组:
byte[] array1=new byte[]{0x01,0x05};
byte[] array2=new byte[]{0x03,0x04,0x02};
我想在array2
和array1[0]
之间添加array1[1]
。我不想在添加array1
后删除array2
中的任何值。作为array2中的值,它应该按原样添加到array1。我不期望排序顺序。
我该怎么做?
答案 0 :(得分:2)
您需要创建一个大小为array1.length + array2.length
的新数组,然后使用System.arrayCopy
之类的内容按照您需要的顺序输入当前数组,
答案 1 :(得分:2)
以下代码返回一个新数组,其中包含 insertIn 到索引位置的数据,然后是 toInsert 中的所有数据,然后是其他数据 insertIn (此代码未经过全面测试,请对该方法实施单元测试;-))
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]
答案 2 :(得分:1)
您需要第三个数组来完成此任务。
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
5
3
4
2
将array2
放在array1
个值
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
3
4
2
5
答案 3 :(得分:1)
一个简单的解决方案可以是:
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];
}
}
答案 4 :(得分:0)
你可以使用下面的代码来组合两个数组,你必须创建第三个数组,它将保存两个数组数据:
byte[] array1=new byte[]{0x01,0x05};
byte[] array2=new byte[]{0x02,0x03,0x04};
int array1Len = array1.length;
int array2Len = array2.length;
byte[] array3 = new byte[array1Len+array2Len];
System.arraycopy(array1, 0, array3, 0, array1Len);
System.arraycopy(array2, 0, array3, array1Len, array2Len);
答案 5 :(得分:0)
这是使用systemarraycopy的方法,它接受两个数组和位置,你希望在第一个数组中插入第二个数组
public static byte[] append(byte[] a, byte[] b,int position) {
byte[] c= new byte[a.length+b.length];
System.arraycopy(a, 0, c, 0, position);
System.arraycopy(b, 0, c, position, b.length);
System.arraycopy(a, position , c, position + b.length , a.length - position);
return c; }