List详解

一、List的实现类有三个:ArrayList、LinkedList、Vector

二、三者的相同点:

1、都是List的实现类
2、都是有序的,并且可重复的

三、三者的不同点:

1、ArrayList底层是Object[] dataElement数组,它是线程不安全的
2、LinkedList底层是双向链表,它是线程不安全的
3、Vector底层也是Object[] dataElement数组,它是线程安全的,是List最古老的实现类,使用最少

四、ArrayList源码分析

JDK7情况下:

List list=new ArrayList() 时,底层创建了长度是10的Object[] 数组;
当调用list.add()方法时,如果长度不够,创建一个新的数组,长度为原来的1.5倍,然后将原数组中的值复制过来。
建议:如果知道list的长度时,可以直接在创建时传入长度,List list=new ArrayList(50),避免了扩容这个过程,提高效率

JDK8情况下:

List list=new ArrayList()时,底层默认时一个{};
当调用list.add()时,才创建长度是10的Object[]数组;
其他的操作于JDK7一样

五、LinkedList源码分析

底层是双向链表,操作它的原理就是操作双向链表

六、Vector源码分析

Vector vector=new Vector() 时,底层创建了长度是10的Object[] 数组;
它的扩容是每次扩大为原来的2倍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的List是一个有序的集合,可以存储重复元素。List接口继承自Collection接口,提供了一些常用的方法,例如添加、删除、查询等。List接口有多个实现类,例如ArrayList、LinkedList、Vector等等,每个实现类都有不同的特点和适用场景。以下是一些常用的List方法: 1. add(E e):在List的末尾添加元素e。 2. add(int index, E e):在List的指定位置index添加元素e。 3. remove(Object o):从List中删除指定元素o。 4. remove(int index):从List中删除指定位置index的元素。 5. set(int index, E e):将List中指定位置index的元素替换为e。 6. get(int index):获取List中指定位置index的元素。 7. size():获取List中元素的个数。 8. indexOf(Object o):返回List中指定元素o的索引,如果不存在则返回-1。 9. subList(int fromIndex, int toIndex):返回List中从fromIndex到toIndex(不包括toIndex)的子列表。 以下是一些常用的List实现类及其特点: 1. ArrayList:基于数组实现,支持快速随机访问元素,但在插入和删除元素时性能较差,适用于读取和遍历操作较多的场景。 2. LinkedList:基于双向链表实现,支持快速插入和删除元素,但在随机访问元素时性能较差,适用于插入和删除操作较多的场景。 3. Vector:与ArrayList类似,但是线程安全,适用于多线程环境。 总之,List是Java中常用的集合类型之一,提供了丰富的API,可以方便地进行元素的添加、删除、查询等操作。在选择List实现类时,需要根据具体的应用场景选择合适的实现类,以获得更好的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值