Java中如何将值数组添加到已存在的int数组中
正确实现(手动遍历版本,便于理解逻辑)
public void addValues(int[] values) { // 计算新数组总长度 int newLength = data.length + values.length; int[] array = new int[newLength]; // 第一步:填充原有旧数组的内容 for (int i = 0; i < data.length; i++) { array[i] = data[i]; } // 第二步:填充待添加数组的内容,起始偏移量为旧数组长度 for (int i = 0; i < values.length; i++) { array[data.length + i] = values[i]; } // 替换原有数组 data = array; }
更高性能的优化实现(调用JDK内置数组拷贝方法)
public void addValues(int[] values) { int newLength = data.length + values.length; int[] array = new int[newLength]; // 拷贝旧数组内容到新数组前半段 System.arraycopy(data, 0, array, 0, data.length); // 拷贝待添加数组内容到新数组后半段 System.arraycopy(values, 0, array, data.length, values.length); data = array; }
原代码问题说明
- 类型不匹配错误:
array[i]是int类型的单个数值,values是int数组,二者类型不匹配无法直接赋值 - 未保留旧数组内容:原有填充逻辑完全没有读取
data数组的元素,旧数据全部丢失
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

