ArrayList的长度扩容是以1.5倍,比如原来是100,扩容之后就是150,源码是进行位运算oldCapacity >> 1
1、ArrayList的add方法的核心方法:Arrays.copyOf(T[] original, int newLength),
original:原始数组
newLength:新数组的长度
比如将一个长度为6的数组变成一个长度为8的数组
String[] arr = {"A", "B", "C", "D", "E", "F"}; arr = Arrays.copyOf(arr, 8);
结果就是:String[] arr = {"A","B","C","D","E","F",null,null};
2、ArrayList的Removce方法的核心方法:System.arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
src:要复制的数组(源数组)
srcPos:复制源数组的起始位置
dest :目标数组
destPos:目标数组的下标位置
length: 要复制的长度
比如:从下标为2的位置开始复制,复制的长度为2(复制C、D),从下标为3的位置开始替换为D、E
String[] arr = {"A", "B", "C", "D", "E", "F"}; System.arraycopy(arr, 2, arr, 3, 2);
结果就是:String[] arr = {"A","B","C","C","D","F"};
关于Vector类型的相关笔记描述:
此类型,和ArrayList可以说是基本一致,但是此类型是线程安全的,可以看add方法和get等方法,都加了synchronized关键字。