几个常量值注意,defaultcapacity_empty_elementdata与empty_elementdata的区别,虽然都是空数组,但是defaultcapacity_empty_elementdata是在无参构造函数里面使用的,而empty_elementdata是在有参构造函数时,capacity=0时使用的!
这是有参构造函数,其中参数是容量,注意第二个else if
这是无参构造函数
calculateCapacity函数主要是计算扩增后的数组大小,在函数体内可以看到,当数组是无参构造而来的初始状态时,会取10和mincapacity的最大值。当有参构造哪怕是0时,也只会返回capacity!
计算出capacity后,就要进行容量扩展了,下面是扩展的重点
grow函数会计算当前数组的capacity的1.5倍,也就是newcapacity,拿这个值和期望扩展的容量进行比较,如果mincapacity大,就扩展为mincapacity,否则去比较一下newcapacity的容量,因为是按扩展0.5倍的规则,所有有可能会溢出,当newcapacity>Integer.MAX-8时,我去看看minCapacity合不合适
可以看到如果mincapacity大于Integer.MAX-8就取Integer.MAX
看一下remove函数,其实原理很简单,学过c++的都应该知道,例如要删除index处的元素,那么就只要把index后面的元素依次往前面移动一个位置
它可以实现将一个数组的指定个数元素复制到另一个数组中
直接举例:
arrayCopy( arr1, 2, arr2, 5, 10);
意思是;将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个.



