https://github.com/crossoverJie/Java-Interview/blob/master/MD/ArrayList.md
1.arrayList 实现 List接口,有序,可重复。可以插入空数据,支持随机访问
2.有2个重要属性,elementData数组,size。
3.add操作,首先 进行扩容校验,然后将插入的值放到尾部,size+1
4.如果插入指定位置,需要用到native方法数组拷贝,system.arraycopy
5.arraylist 的主要消耗是 扩容,以及在指定位置 添加数据。
6.elementdata 元素 定义成 transient,即不可以序列化。
又重写了 readobject和writeobject。
这样做的目的是避免空间的浪费。因为数组的容量实际大于 当前所存元素个数。
所以在writeobject序列化时,只序列化实际存储的元素。
https://www.cnblogs.com/aoguren/p/4767309.html
LinkedList
1.基于双向链表实现,插入快,因为 链表存储的都是对象的引用,插入和删除 只涉及到 类似指针的移动。
2.查询慢,使用二分查找。