ArrayList和LinkedList的区别

一、ArrayList和LinkedList的相同点

ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用,他们都可以对元素的增删改查进行操作。

ArrayList、LinkedList、Vector和Stack是List的四个实现类, List是一个接口,它继承与Collection接口,代表有序的队列。其中Vector是基于JDK1.0,虽然实现了同步,但是效率低,已经不用了,Stack继承与Vector。

二、ArrayList和LinkedList的区别

1、数据及内部结构

(1)ArrayList是基于(Array)动态数组的数据结构

ArrayList内部使用数组的形式实现了存储,实现了RandomAccess接口,利用数组的下面进行元素的访问。

(2)LinkedList是基于(Link)链表的结构

LinkedList内部使用双向链表的结构实现存储,LinkedList有一个内部类作为存放元素的单元,里面有三个属性,用来存放元素本身以及前后2个单元的引用,另外LinkedList内部还有一个header属性,用来标识起始位置,LinkedList的第一个单元和最后一个单元都会指向header,因此形成了一个双向的链表结构。

2、扩容问题

(1)ArrayList以数组复制的形式进行步长是0.5倍原容量的扩容

因为是数组,所以ArrayList在初始化的时候,有初始大小10,插入新元素的时候,会判断是否需要扩容,步长是0.5倍原容量扩容的步长是0.5倍原容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值