数组的扩容和缩容

数组的扩容和缩容

动态扩容
1.使用for循环复制元素扩容
缺陷: 拷贝一部分元素需要计算索引,比较复杂
2.System.arraycopy()扩容
缺陷: 拷贝数组的一部分到目标数组,如果长度超过了目标数组的索引,会抛出异常
3.Arrays.copyOf扩容
观察copyOf方法的源码:

public static int[] copyOf(int[] original, int newLength) {
	     int[] copy = new int[newLength];
		 System.arraycopy(original, 0, copy, 0,
	     Math.min(original.length, newLength));
		 return copy;
		    }

4.利用Object类中一个 clone 方法,该方法是真正意义上的复制数组

import java.util.Arrays;

public class ArrayDemo04 {
	public static void main(String[] args) {
		int[] src = { 11, 22, 33, 44 };
		int[] desc = new int[10];

		// 1.使用for循环复制元素扩容
		for (int i = 0; i < src.length; i++) {
			desc[i] = src[i];
		}
		System.out.println(Arrays.toString(desc));

		// 2.System.arracopy()扩容
		System.arraycopy(src, 0, desc, 7, src.length); // 数组越界
		System.out.println(Arrays.toString(desc));
		
		// 3.Arrays.copyOf扩容
		int[] descArr = Arrays.copyOf(src, src.length + 5);
		System.out.println(Arrays.toString(descArr));
	}
}

你可能感兴趣的:(JavaSE)