当前位置: 首页 > news >正文

LinkedList

一.IDEA的链表库

IDEA上实现链表的包,实现的是无头双向不循环链表:(并且这个链表有头尾节点)

二.自己实现一个无头双向不循环链表

1.创建链表的类,在链表内中定义一个节点的内部类,并且在链表的类中定义头节点和尾节点:

2.之后和的单链表是一样的结构,头插尾插指定位置插入删除第一个为val值的节点,删除所有为val值的节点,清空链表,链表的长度,链表的查找,链表的打印:

        这里需要重点说的就是删除节点的数据,因为双向链表存在头尾节点,然后如果只有一个节点的话,要删除这个节点就要直接将这个头尾节点设置为null就行了, 如果删除头节点,那么就要考虑头节点是没有前驱节点的,是不能把前驱节点的next指向头节点的next的节点。尾节点也是这个道理。

删除所有val值的节点就把return删去即可。

三.IDEA上的LinkedList

1.LinkedList实现了List的接口。

2.LinkedList底层使用的是双向链表。

3.LinkedList可以随机访问。(这里说的随机访问还是通过循环链表来实现的)

4.LinkedList没有实现RandomAccess接口。

5.LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1) 。(这里的时间复杂度指的是删除的数据的时候才是O(1)因为删除元素的时候不需要移动元素,但是整个过程的话要加上找到index下标的元素,时间复杂度就成为O(N)了)

6.LinkedList比较适合任意位置插入的场景。

7.LinkedList的两种构造方法:

第二种构造方法,其中就类似于泛型的上界,这里的colletion被ArrayList和LinkedList所实现的:

这里的add默认方法是尾插法:其他的方法都和我们实现的是一样的。

Linked List的其他方法:

LinkedList的遍历

1.for-each循环:

2.for循环(需要注意的是,不能在循环里面边打印边删除,因为当你在打印第一个数据的时候,第二个数据就变成第一个数据了,但是此时你的i的数据是2而不是1,就会导致空指针异常):

3.迭代器遍历:

四.ArrayList和LinkedList区别:

相关文章:

  • Cherno C++ P55 宏
  • 什么是MVC?什么是SpringMVC?什么是三层架构?
  • 使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统
  • scratch发射火箭 2024年12月scratch三级真题 中国电子学会 图形化编程 scratch三级真题和答案解析
  • DeepSeek 的开源优势:为什么选择它而不是其他闭源模型?
  • 人工智能 - 大脑神经网络与机器神经网络的区别
  • GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
  • 10G EPON光模块
  • 深入解析 vLLM:高性能 LLM 服务框架的架构之美(一)原理与解析
  • CPP集群聊天服务器开发实践(五):nginx负载均衡配置
  • Field ‘id‘ doesn‘t have a default value
  • Redis 事物
  • React 第二十六节 <Profiler></Profiler> 的用途使用方法
  • 【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
  • 2025年 Java 面试八股文
  • 鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍
  • 【数据结构】 栈和队列
  • Unity DeepSeek API 聊天接入教程(0基础教学)
  • 聊一聊vue如何实现角色权限的控制的
  • JavaBean
  • 加拿大今日大选:房价、印度移民和特朗普,年轻人在焦虑什么?
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 演员孙俪:中年人没有脆弱的时间,学习胡曼黎不内耗
  • 万能险新规落地:保险期限不得低于五年,明确万能险销售“负面清单”
  • 专访|攸佳宁:手机只是矛盾导火索,重要的是看见孩子的内心
  • 央行:25日将开展6000亿元MLF操作,期限为1年期