List集合

一.List集合
1.集合框架(简介、Collection方法、迭代器)
2.集合框架List(ArrayList特有方法、特有迭代器、具体对象特点、增长因子论证)
3.集合框架Vector
4.集合框架LinkedList
5.集合框架ArrayList中的重复元素去重及其底层原理

二.ArrayList
既然要介绍ArrayList,那么就顺带一起介绍Vector。因为二者的用法功能非常相似,可以一起了解比对。

  1. 简介
    ArrayList和Vector作为List类的两个典型实现,完全支持之前介绍的List接口的全部功能。

ArrayList和Vector类都是基于数组实现的List类,所以ArrayList和Vector类封装了一个动态的、允许再分配的Object[]数组。ArrayList或Vector对象使用initalCapacity参数来设置该数组的长度,当向ArrayList或Vector中添加元素超过了该数组的长度时,它们的initalCapacity会自动增加。下面我们通过阅读JDK 1.8 ArrayList源码来了解这些内容。

  1. ArrayList 本质
    当以List list = new ArrayList(3);方式创建ArrayList集合时,

在这里插入图片描述

三.集合框架Vector
在这里插入图片描述

四. LinkedList

  1. 简介
    LinkedList类是List接口的实现类——这意味着它是一个List集合,可以根据索引来随机访问集合中的元素。除此之外,LinkedList还实现了Deque接口,可以被当作成双端队列来使用,因此既可以被当成“栈”来使用,也可以当成队列来使用。

LinkedList的实现机制与ArrayList完全不同。

  • ArrayList内部是以数组的形式来保存集合中的元素的,因此随机访问集合元素时有较好的性能;
  • 而LinkedList内部以链表的形式来保存集合中的元素,因此随机访问集合元素时性能较差,但在插入、删除元素时性能比较出色。

由于LinkedList双端队列的特性,所以新增了一些方法。

  1. 方法
    方法 描述
    void addFirst(E e) 将指定元素插入此列表的开头。
    void addLast(E e) 将指定元素添加到此列表的结尾。
    E getFirst(E e) 返回此列表的第一个元素。
    E getLast(E e) 返回此列表的最后一个元素。
    boolean offerFirst(E e) 在此列表的开头插入指定的元素。
    boolean offerLast(E e) 在此列表末尾插入指定的元素。
    E peekFirst(E e) 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
    E peekLast(E e) 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
    E pollFirst(E e) 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
    E pollLast(E e) 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
    E removeFirst(E e) 移除并返回此列表的第一个元素。
    boolean removeFirstOccurrence(Objcet o) 从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
    E removeLast(E e) 移除并返回此列表的最后一个元素。
    boolean removeLastOccurrence(Objcet o) 从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
    下面我们就以阅读源码的方式来了解LinkedList内部是怎样维护链表的。

  2. LinkedList本质
    LinkedList调用默认构造函数,创建一个链表。由于维护了一个表头,表尾的Node对象的变量。可以进行后续的添加元素到链表中的操作,以及其他删除,插入等操作。也因此实现了双向队列的功能,即可向表头加入元素,也可以向表尾加入元素

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值