ArrayList 的特点及优缺点

前面讲过,数组有很多缺点且使用不太方便,但是我们存储数据的时候很多情况又不得不使用它,那么有没有对数组封装一下的类,让我们更方便呢?答案是有的,他就是 ArrayList,他是一个基于数组的集合,如源码所示:

public class ArrayList<E> {
    
    
	transient Object[] elementData; 
}

在这里插入图片描述
ArrayList 的特点:有序、可重复、可存 null 值

ArrayList 的优点:查询快,知道索引瞬间查到,他是所有集合当中查询速度最快的

ArrayList 的缺点:增删慢

  1. 因为之前提到过数组一旦创建长度就固定了,在使用的过程中,不能更改,所以说数组一旦满了就得扩容,扩容的操作是先创建一个原来容量1.5倍的新数组,然后将之前数组的元素拷贝到新数组中来,再添加新数据;由于扩容需要新建数组且拷贝之前到元素到新数组中,所以说数据越多,操作越慢。
  2. 同样的道理,在执行插入操作的时候,需要将插入节点之后所有的数据向后移动,执行删除操作时,有需要将删除节点之后的所有数据向前移动,由于需要移动数据,所以说操作的节点之后的数据越多,操作越慢。

这里说一下数组的两个概念:大小、容量

大小指的是数组元素的个数,容量指的是数组本身的长度(最多可存储的元素个数)

ArrayList 的创建方式


public class ArrayList<E> {
    
    

	public ArrayList()
	
	public ArrayList(int initialCapacity) 
	
	public ArrayList(Collection<? extends E> c) 
	
}

通过无参构造创建时,数组的默认初始容量是10

通过指定长度参构造创建时,数组的初始容量是指定的长度

第三种在创建时,会将传入的集合数据存储到数组中,数组的初始容量是传入集合的长度

ArrayList 的常用方法

ArrayList 作为 List、Collection 的子类,他具有他们所有的方法,但是常用的方法只有10个,我们来做一下分类:

在这里插入图片描述

ArrayList 和 LinkedList 的区别

分类 ArrayList LinkedList
数据结构 数组 链表
查询速度
增删速度
存储相同数据所需要的空间
应用场景 查询较多 增删较多

猜你喜欢

转载自blog.csdn.net/qq_35178391/article/details/130268374
今日推荐