代码实现
public class Test {
/*
当我们向ArrayList中添加新数据时,如果ArrayList的原长度存放不下新数据,ArrayList就会自动扩容,
我们要创建新数组,新数组的长度要等于原数组的1.5倍
用代码展示ArrayList的扩容机制
*/
public static void main(String[] args) {
//原数组的长度为10
int[] arr1= new int[10];//注意ArrayList的底层逻辑是是数组
//调用add方法来求出新数组,并且使用原数组接收返回的新数组
arr1= add(arr1);
System.out.println(arr1.length); //输出新数组的长度
}
//数组扩容的方法
public static int[] add(int[] a){
int[] arr2=new int[(a.length>>1)+a.length];//利用位运算来将新数组的长度变为传入的原数组的1.5倍 位运算右移一位是除以2,(a.length>>1)为原数组长度的一半
for (int i=0;i<a.length;i++){ //这里要注意i<a.length,写的是小于原数组的不是新数组的,因为新数组的长度肯定是大于原数组的
arr2[i]=a[i];//将原数组的元素赋值给新数组
}
return arr2;//返回新数组
}
}