java怎么给数组添加超出数组length的索引添加值

我想请问一下,java怎么给数组添加超出数组length的索引添加值
最新回答
﹏空白

2024-09-29 07:33:01

一般是这样做的。当访问越界,或者添加数据超过数组当前的length时候。
重新申请一个大于等于越界长度的数组。
然后通过Sysmem.arraycopy将原先数组的内容拷贝到新的内存块中。
如果删除了某些元素,使得capacity(容器大小)远大于实际的length时。可以重新构建trim后的数组并copy过去。
这也是ArrayList中的实现方法。System.arraycopy是一个native方法,拷贝效率比较高。
或者你看下arraylist的源码就明白了
半袖桃花

2024-09-29 01:09:53

Java的数组是固定长度的。比如int[] arr = new int[5],这就是声明和初始化了容量为5的整形数组。一旦初始化不能变化。

如果想要添加更多的元素到数组里,需要进行“扩容”。其实是创建新的数组,然后进行数据拷贝,以下为参考的“扩容”方法。

int[] arr = new int[5];
public void expand(){
int[] buf=new int[a.length*2];
System.arraycopy(a,0,buf,0,a.length);
arr = buf;
}
微光迷失尘夏

2024-09-29 04:42:00

动态数组都是用容器存放的 list arraylist map 等 那些去做动态添加