加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读