List,ArrayList,Vector,LinkedList的介绍

目录

        List集合存储元素的特点:

        List接口中常用的方法:

        List集合的三种遍历方式

        ArrayList集合的特点:

        Vector集合的特点:

        LinkedList集合的特点:


List集合存储元素的特点:

  • 有序可重复
  • 有序:存进去的顺序和取出的顺序相同,每一个元素都有下标。
  • 可重复:存进去1,还可以存储一个1。

List接口中常用的方法:

  • List集合存储元素特点:有序可重复。
  • 有序:List集合中的元素有下标,从0开始,以1递增。
  • 可重复:存储一个1,还可以再存储1。
  • List既然是Collection接口的子接口,那么肯定List接口有自己的特色方法:
    • void add(int index , Object element);  //在列表的指定位置插入指定元素,(第一个参数是下标)
    • Object remove(int index);  // 删除指定下标位置的元素
    • Object set(int index , Object element);   //修改指定位置的元素
    • Object get(int index);  // 根据下标获取元素
    • int indexOf(Object obj);  //获取指定对象第一次出现处的索引
    • int lastIndexOf(Object obj);  //获取指定对象最后一次出现处的索引
    • List[] subList(int fromIndex,int toIndex);  // 返回从fromIndex到toIndex位置的子集合,顾头不顾腚

List集合的三种遍历方式

ArrayList集合的特点:

  • 1、默认初始化容量10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量10)。
  • 2、构造方法:
    • new ArrayList();
    • new ArrayList(int capacity);
  • 3、ArrayList集合的扩容:
    • 增长到原容量的1.5倍,底层是:原容量 + (原容量 >> 1) , 就是原容量 * 1.5
    • ArrayList集合底层是数组,怎么优化?
      • 尽可能少的扩容,因为数组扩容效率比较低,建议在使用ArrayList集合的时候
      • 预估计元素的个数,给定一个初始化容量。
  • 4、数组的优点:
    • 检索效率比较高。
  • 5、数组的缺点:
    • 随机增删元素效率比较低。
    • 另外数组无法存储大数据量。(很难找到一块非常巨大的连续的内存空间)
  • 6、向数组末尾添加元素,效率很高,不受影响。
  • 7、ArrayList不是线程安全的集合。在多线程的情况下,不建议使用ArrayList。
  • 8、怎么将一个线程不安全的ArrayList集合转换成线程安全的呢?
    • 使用集合工具类:java.util.Collections;
    • List list = Collections.synchronizedList(new ArrayList());

Vector集合的特点:

  • 1、底层也是一个数组。
  • 2、初始化容量是:10
  • 3、怎么扩容呢?
    • 扩容之后是原容量的2倍。
  • 4、Vector中所有的方法都是线程同步的,都带有synchronized关键字,
    • 所以是线程安全的,效率比较低,使用较少。

LinkedList集合的特点:

  • 1、LinkedList集合底层是双向链表。
  • 2、链表的优点:
    • 由于链表上的元素在空间存储上内存地址不连续。所以随机增删元素的时候不会有大量元素位移,因此随机增删效率较高。
    • 在以后的开发中,如果遇到随机增删集合中元素的业务比较多时,建议使用LinkedList
  • 3、链表的缺点:
    • 不能通过数学表达式计算被查找元素的内存地址,每一次查找都要从头节点开始遍历,直到找到为止,所以LinkedList集合检索/查找的效率较低。
  • 4、LinkedList集合有初始化容量吗?   没有。最初这个链表中没有人任何元素。first和last引用都是null。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@小红花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值