数据结构---继续走进Linked List

目录:

一:ArrayList的缺陷

二:LinkedList的使用

三:LinkedList的使用

3.1:LinkedList的构造

3.2:LinkedList的其他常用方法

3.3:LinkedList的遍历

四:总结


一:ArrayList的缺陷


 ArrayList底层使用数组来存储元素:由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。

因此:java集合中又引入了LinkedList,即链表结构。

二:LinkedList的使用


LinkedList的底层是双向链表结构(不仅知道后面的在哪,还知道前面的在哪)

由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。

 【说明】

  • LinkedList实现了List接口
  • LinkedList的底层使用了双向链表
  • LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问
  • LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)

三:LinkedList的使用


3.1:LinkedList的构造

方法解释
LinkedList()无参构造
public LinkedList(Collection<?extends E>c)使用其他集合容器中元素构造List

 3.2:LinkedList的其他常用方法

 注意: get方法不咋用,因为链式结构要找任意位置的元素不太好找,时间复杂度就成O(N)了。 

3.3:LinkedList的遍历

注意:第一种通过get()方法遍历是效率最慢的,因为时间复杂度是O(N) 。

四:总结


List:

  • 接口------>规范了许多方法
  • 继承Collection接口
  • 从数据结构角度--->线性表

ArrayList:

  • 实现了List接口
  • 底层使用一个数组(连续空间)存储元素
  • 从数据结构角度--->动态类型的顺序表

LinkedList:

  • 实现了List接口
  • 底层使用双向链表结构存储管理元素
  • 从数据结构角度--->双向链表

Vector:

  • 实现List接口
  • 底层使用数组(连续空间)存储元素
  • 从数据结构角度--->动态类型顺序表
  • 线程安全
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值