ArrayList的学习
实现多个接口,且继承一个类
- ArrayList继承AbstractList类
- 实现了List、Cloneable、RandomAccess、Serializable接口
优点
- 容量不固定,想放多少放多少(当然有最大阈值,但一般达不到)
- 有序的(元素输出顺序与输入顺序一致)
- 元素可以为 null
- 效率高
- size(), isEmpty(), get(), set() iterator(), ListIterator() 方法的时间复杂度都是 O(1)
add() 添加操作的时间复杂度平均为 O(n) - 其他所有操作的时间复杂度几乎都是 O(n)
- 占用空间更小
- 对比 LinkedList,不用占用额外空间维护链表结构
缺点
- 底层为数组,所以它增删的效率比较低,适合尾部的增删。
- 相比于hashmap,它的查找效率比较低。
Array和ArrayList的区别
- Array可以包含基本类型和对象类型,而ArrayList只能包含对象类型。
- Array大小是固定的,而ArrayList大小不是固定的。
- ArrayList提供了多种方法,比如add(), remove(int index)等等。