ArrayList学习

132 阅读1分钟

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.查询慢,使用二分查找。