List接口
List接口中常用的方法
- List集合存储元素特点:有序可重复
- 有序:List集合中的元素有下标
从0开始,以1递增
可重复:存储一个,还可以再存储相同对象
- 有序:List集合中的元素有下标
- List既然是Collection接口的子接口,那么肯定List接口有自己的特色方法
- Void add(int index, E element)使用较少,因为底层存储为数组,向指定位置插入数据效率较低
- E get(int index) 因为有下标,所以List可以使用下标进行遍历
- int lastIndexOf(Object o) 最后一次出现的索引
- int indexOf(Object o) 对象第一次出现的索引
- E remove(int index) 删除下标index处的元素
- E set(int index, E element) 修改制定index处的元素
ArrayList集合
-
默认初始化容量是10
-
集合底层是一个Object[]数组
-
构造方法1无参2int长度
-
size方法返回的是list中元素数量
-
底层先创建了一个长度为0的数组,当添加第一个元素时,初始化容量为10
-
扩容会增加为1.5倍,尽可能的少进行扩容,因为数组的扩容效率较低,建议在使用ArrayList集合的时候预估元素数量,给定一个初始化容量。
-
数组优点
- 检索效率较高,(每个元素占用空间大小相同,内存地址连续,知道首元素内存地址和下标后,通过数学表达式计算出元素的内存地址,所以检索效率最高)
-
数组缺点
- 随机增删元素效率较低
- 数组无法存储大数据量(很难找到一块儿巨大的连续存储空间)
-
向数组末尾添加元素,效率很高,不受影响
-
面试常问:这么多集合中,使用哪个集合最多?
- Arraylist :因为向数组末尾添加元素效率不受影响。另外,业务上需要检索查找某个元素的需求较多
通过new ArrayList(Collection c)方法可以将其他集合转化为ArrayList
可使用Collections.synchronizedList(List list)方法,将list变为线程安全的对象
浙公网安备 33010602011771号