Java
第一部分请看《 Java面试题 Part13 手写ArrayList(一) 》
1
在指定位置插入元素。
首先要扩容,然后将数组中要插入位置之后的所有元素向后挪一位,再将新元素设置在指定位置上。
2
3
删除指定元素,要先遍历数组,获取此元素在数组的具体位置。
删除指定位置的元素,就是讲此元素之后的所有元素都往前挪一位,然后把最后位置的元素置为Null。
4
清空方法就是讲内部的数组每个元素置为Null,把size设为0。
将Collection增加至List里,首先是将Collection转为数组,然后将原List数组的长度扩容为原长度+新数组长度。
然后将新数组复制进原数组。
System.arraycopy(要复制的数组,要复制数组的开始位置,被添加的数组,从被添加的数组第几个位置开始添加,添加多少个元素)。
List的Size增加。
5
在之前说元素的时候指出数组dataArr是transient,即不会被序列化。那么ArrayList的序列化、反序列化就是靠writeObj和readObj两个方法。