List集合<ArrayList,Vector,LinkList>

List集合

List集合

特点:

  1. 元素有序,添加和取出顺序一致、可重复。
  2. 每个元素都有其对应的顺序索引,即支持索引
  3. ArrayList可以存放null;底层是数组实现的;没有synchronized修饰,是线程不安全的,效率高
  4. Vector是有synchronized修饰,是线程安全的,效率低

List接口的常用方法

void add(E element);			在集合末尾插入元素
void add(int index, E element);	指定位置插入元素
int indexOf(Object o); 			返回指定元素o首次一次出现的位置的索引
int lastIndexOf(Object o);		返回定元素最后一次出现的位置的索引
boolean remove(Object o);		在指定元素 o 首次出现的地方删除o
E set(int index, E element);	在指定位置index用element替换原始元素
List<E> subList(int fromIndex, int toIndex);返回从fromIndex到toIndex的子集合[)前闭后开

ArrayList

ArrayList的扩容机制
特点
  1. ArrayList维护了一个Object类型的数组elementData:transient Object[] elementData
  2. 当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如果需要再次扩容,则扩容elementData的1.5倍。
  3. 如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍。
    注:transient表示瞬间暂时的,表示该属性不会被序列化。

Vector

Vector的扩容机制
特点
  1. 如果是无参,则默认是10,满后按2倍扩容。
  2. 如果指定大小,则每次直接按2倍扩容。
  3. 可以指定初始打下,也可以指定每次扩容的大小。

LinkedList

LinkList的底层结构
  1. LinkedList底层实现了双向链表和双端队列的特点
  2. 可以添加任意元素(包括null),可以重复
  3. 线程不安全,没有实现同步
LinkedList的底层操作机制
  1. LinkedList底层维护了一个双向链表
  2. LinkedList维护了两个属性first和last,分别指向首节点和尾结点
  3. 每个节点(Node),里面有维护了prev、next、item三个属性
  4. LinkedList的添加和删除元素是通过链表完成的,速度快,效率高

ArrayList与LinkedList比较

底层结构增删的效率改查的效率
ArrayList可变数组较低数组扩容较高
LinkedList双向链表较高,通过追加较低
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值