java – 如何在数组中间添加?
发布时间:2020-12-15 08:28:50 所属栏目:Java 来源:网络整理
导读:我试图创建一个名为insertAt的方法,它接受3个参数(int index,int n,int value),这样如果我调用: list.insertAt(2,4,98)在[12,42,8,934]的数组上,它现在应该存储[12,98,934]. int index是我开始放置值的地方 int n是多少个值 int value是我想要放入的实际值
我试图创建一个名为insertAt的方法,它接受3个参数(int index,int n,int value),这样如果我调用:
list.insertAt(2,4,98)在[12,42,8,934]的数组上,它现在应该存储[12,98,934]. int index是我开始放置值的地方 int n是多少个值 int value是我想要放入的实际值或数字. 我在一个名为ArrayIntList的类中创建此方法: public class ArrayIntList { private int[] elementData; // list of integers private int size; // current # of elements in the list } 我尝试制作下面的方法,但我仍然坚持我所缺少的.如果你们可以帮助我,我会非常感激! public void insertAt(int index,int value) { if (index < 0 || index > size || n < 0) { throw new IllegalArgumentException(); } size = size + n; for (int i = 0; i < n; i++) { elementData[(size - 1) - i] = elementData[(size - n) + i]; elementData[n + i] = value; } } 解决方法
示例中的数组只包含4个值,但您尝试添加4个值.由于数组具有固定长度,因此这是不可能的.所以你必须创建一个长度为n的新数组:
int[] newElements = new int[size + n]; 然后,您必须将所有元素从0复制到索引,并将索引元素从旧版本复制到新数组: System.arraycopy(elementData,newElements,index); System.arraycopy(elementData,index,index + n,size - index); 然后你必须将新元素插入数组n次: Arrays.fill(newElements,value); 最后,您必须将新数组重新分配给旧实例1并设置新大小: elementData = newElements; size += n; 我已经使用了JDK中的一些辅助方法,比如System.arraycopy,它具有以下签名: void arraycopy(Object src,int srcPos,Object dest,int destPos,int length); 它将src中的元素从srcPos复制到srcPos长度,复制到dest,从destPos到destPost长度 Array.fill也是一个很好的帮手,具有以下签名: void fill(int[] a,int fromIndex,int toIndex,int val) 它使用值val从fromIndex到toIndex填充数组a (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |