文章目录
前言
把ArrayList和Vector写一起是因为两个类之间有联系。
一、ArrayList
1.1 ArrayList概述
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以 ArrayList 是最常⽤的集合。
a. 底层数据结构:顺序结构
b. 底层实现:数组
c.特点:
①.按照顺序排列,每个元素都带有标号
②.除了有标号是连续的,内存中的物理空间也是连续的
d.优缺点:
优点: 查询速度快(因为有连续的下标,可以根据下标进行查询)
缺点:
①. 插入/删除速度慢(插入/删除都是要移动元素的,所以元素一多就会执行效率慢)
②. 内存的物理空间是连续的,利用不到碎片空间
1.2 常用API
构造方法:
实例方法:
二、Vector
2.1 Vector概述
a.底层数据结构:顺序结构
b.底层实现:数组
c.特点:
①.全部和ArrayList一样
②.Vector上带有线程同步锁(synchronized),所以是线程安全的,效率低
d.优缺点:
全部和ArrayList一样
2.2 字段摘要
2.3 常用API
构造方法:
实例方法:
三、ArrayList与Vector的异同(重点)
简而言之:
a.线程安全
ArrayList不带锁,线程不安全(线程异步),效率高
Vector带锁,线程安全(线程同步),效率低
b.扩容问题
ArrayList扩容为原容量的1.5倍(),构造方法不可自定义增长因子
Vector扩容为原容量的2倍(),构造方法可自定义增长因子(0也行),不定义则默认2倍
c.出现版本
ArrayList出现于jdk1.2
vector出现于jkd1.0
d.相同部分:
底层数据结构是数组结构
查找一个指定位置的数据 ,vector和arraylist使用的时间是相同 的,都是O(1)
继承的类实现的接口都是一样的:
继承了AbstractList类(继承后可以使用迭代器遍历)
实现了RandomAccess(标记接口,标明实现该接口的list支持快速随机访问)
cloneable接口(标识接口,合法调用clone方法)
serializable(序列化标识接口)
四、LinkedList
五、LinkedList与ArrayList的异同(重点)
总结
提示:List大类总结到这里来,重点记住实现类之间的区别即可