ArrayList 基于动态数组存储元素,实现了List 接口
1)支持随机访问元素,不需要遍历,通过下标索引直接访问,时间复杂度为O(1);
2)在不需要扩容的前提下, 尾插的时间复杂度为o(1),;
3)数组的内存空间时连续的,所以头插、中间插入、删除的时候需要移动数组元素,时间复杂度时O(n)。
4)ArrayList 支持拷贝,可实现动态扩容,将数组复制到更大的内存空间。
5)实现了Serializable接口,序列化后的对象可以用于网络传输,写入数据库,写到文件。transient关键字修饰的的字段不能被序列化。ArrayList提供了writeObject和readObject完成序列化和反序列化,不会序列化扩容导致的空闲空间。
ArrayDeque 基于环形数组实现双端队列,实现Deque接口
1)支持随机访问元素
2)可在头部和尾部插入、删除、添加元素,添加元素时如果head==tail,则进行扩容
有关ArrayDeque的具体内容可以看这个
方法 | 解释说明 |
---|---|
addLast,addFirst | 插入成功没有返回值,插入失败抛异常,添加元素不能为空null |
offerLast , offerFirst | 插入成 |