[java基础-集合篇]LinkedList源码粗析
LinkedList 的数据结构
![](https://i-blog.csdnimg.cn/direct/ccaf641393bc44f58064ec264f5ea21a.png)
![](https://i-blog.csdnimg.cn/direct/80fc99745b7442f5bfe024b9b9fb6c65.png)
![](https://i-blog.csdnimg.cn/direct/5183556e7d6c4c6496b1bd0a3445771f.png)
- 数据本身
- 指向前一个元素的引用(前驱)
- 指向后一个元素的引用(后继)
LinkedList方法
get(int index)方法
![](https://i-blog.csdnimg.cn/direct/b23c652fc27b40969d2cd1145ada3ddb.png)
![](https://i-blog.csdnimg.cn/direct/2a5cc9fb00684b3995c154eb2f545a5e.png)
add(E e)方法
![](https://i-blog.csdnimg.cn/direct/f521958550c3400686d67dc3df805a45.png)
![](https://i-blog.csdnimg.cn/direct/d46fb6b8590c4dd786ca307008a95910.png)
add(int index, E element)方法
![](https://i-blog.csdnimg.cn/direct/9c0fb0facd7446a187ee68db1564a85d.png)
![](https://i-blog.csdnimg.cn/direct/61b2af61b95c4b30a5921f621433756e.png)
remove()方法
![](https://i-blog.csdnimg.cn/direct/60ca97485e4a4658964850eef97bea4a.png)
remove(int index)
![](https://i-blog.csdnimg.cn/direct/022921dfa2234db4b1d0ee37585e127a.png)
remove(Object o)方法
![](https://i-blog.csdnimg.cn/direct/e00bf11a77034ac79b072d470b9c3e0b.png)
LinkedList 的特点
- 插入和删除操作快:由于双向链表的特性,可以在 O(1) 时间内完成插入和删除。
- 不适合随机访问:相对于数组来说,链表的随机访问较慢,因为必须从头开始遍历链表直到找到所需的元素。
- 内存消耗较大:每个元素除了存储自身的数据外,还需要额外的空间来保存前后节点的引用,因此比数组占用更多的内存。
- 允许空值
优化点
LinkedList 相关的面试题
下面列出了一些与 LinkedList 相关的常见面试题:
1.解释什么是双向链表,并描述其优势。
- 双向链表是一种链表,其中每个节点包含对前一个节点和下一个节点的引用。这使得可以从前向后和从后向前遍历列表,也简化了插入和删除操作。
- 在 LinkedList 中,插入操作只需要修改相关节点的前后指针即可,因此时间复杂度为 O(1)。
2.LinkedList 和 ArrayList 之间的区别是什么?
- LinkedList 使用链表实现,适合频繁的插入和删除操作;ArrayList 使用数组实现,适合随机访问元素。
3.为什么 LinkedList 的 get(int index) 方法的时间复杂度是 O(n)?
- 因为 LinkedList 需要从头部或尾部开始遍历到指定索引的位置,最坏情况下可能需要遍历整个列表。
- LinkedList 提供了对 ListIterator 的支持,允许用户在迭代过程中添加、删除或修改元素。
4.如何检测 LinkedList 中是否存在环?(理论上标准的LinkedList不会出现环形链表)
- 常见的方法是使用 Floyd's Cycle-Finding Algorithm 或者称为龟兔赛跑算法,通过两个不同速度的指针来检测循环的存在。
5.如何反转一个 LinkedList?
- 反转 LinkedList 的一种方法是从头节点开始,逐个交换每个节点的前后指针,直到到达最后一个节点。
推荐资料
相关文章:
![](https://i-blog.csdnimg.cn/direct/e00bf11a77034ac79b072d470b9c3e0b.png)
[java基础-集合篇]LinkedList源码粗析
LinkedList 的数据结构 实现List、Deque 接口,基于 双向链表实现的列表。与基于数组的 ArrayList 不同,基于链表的LinkedList 允许在列表的任何位置快速地插入和删除元素。 Java中LinkedList实现了Deque,它提供了 add, offer, remove, poll, …...
![](https://www.ngui.cc/images/no-images.jpg)
面试:C++类成员初始化顺序
1、非静态数据成员:按它们在类定义的声明顺序初始化,不会按它们在初始化列表的顺序。 2、静态数据成员:在main函数启动之前,并且只初始化一次 3、基类构造函数:如果类从一个或多个基类继承而来,基类的构造…...
![](https://i-blog.csdnimg.cn/direct/f553c49a863b4e419f922653ccba7722.png#pic_center)
【Python】Python与C的区别
文章目录 语句结束符代码块表示变量声明函数定义注释格式Python的标识符数据输入input()函数数据输出print()函数 语句结束符 C 语言 C 语言中每条语句必须以分号;结束。例如,int a 10;、printf("Hello, World!");。分号是语句的一部分,用于…...
![](https://i-blog.csdnimg.cn/direct/6b25cc4ca1ad4f9a90b32efe06f070f1.png)
[开源]自动化定位建图系统(视频)
系统状态机: 效果展示: 1、 机器人建图定位系统-基础重定位,定位功能演示 2、 机器人建图定位系统-增量地图构建,手动回环检测演示 3、… 开源链接: https://gitee.com/li-wenhao-lwh/lifelong-backend Qt人机交互…...
![](https://i-blog.csdnimg.cn/img_convert/caa166256384118b9bdbf370f47bb601.png)
ISP流程--去马赛克详解
前言 本期我们将深入讨论ISP流程中的去马赛克处理。我们熟知,彩色图像由一个个像元组成,每个像元又由红、绿、蓝(RGB)三通道构成。而相机传感器只能感知光的强度,无法直接感知光谱信息,即只有亮暗而没有颜色…...
![](https://www.ngui.cc/images/no-images.jpg)
Objective-C语言的软件工程
Objective-C语言的软件工程探讨 引言 在软件工程的领域中,编程语言的选择是至关重要的。Objective-C,作为一种为苹果公司的macOS和iOS操作系统而开发的编程语言,凭借其灵活性和强大的功能被广泛应用于应用开发。然而,随着Swift等…...
![](https://www.ngui.cc/images/no-images.jpg)
Objective-C语言的语法糖
Objective-C语言的语法糖探秘 在编程语言的发展历程中,语法糖(Syntactic Sugar)是一个颇具趣味性和重要性的概念。它让编程的表达更加简洁直观,同时提高了代码的可读性和可维护性。Objective-C 作为一种面向对象的编程语言&#…...
![](https://www.ngui.cc/images/no-images.jpg)
设计模式中的代理模式
在Java中,代理模式(Proxy Pattern)可以通过静态代理和动态代理两种主要方式实现。 一、静态代理模式 在编译时就已经确定了代理类和被代理类的关系。 代理类和目标对象通常实现相同的接口或继承相同父类。 缺点是对于每个需要代理的目标对象…...
![](https://www.ngui.cc/images/no-images.jpg)
15个学习Python 的编程游戏网站
从小很多人都会在想,那些枯燥的教学课程要是全部变成游戏就好了,这样的话那期末成绩不得立即起飞了嘛?那对于编程很多人也有这样的想法,边玩边学就好了 这不已经有很多程序员开发了多款边玩边学的编程游戏供大家使用,…...
![](https://www.ngui.cc/images/no-images.jpg)
微信小程序实现拖拽盒子效果
要实现一个当前盒子高度由里面的盒子进行支配高度拖拽的效果 // wxml<view class"exmation-item" wx:elif"{{type4}}"> <view class"exmation-item-drag-box" id"drag-box"> <!-- 内容 --><view class"exm…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux-蓝牙协议
SPP (Serial Port Profile): 串口协议(SPP)是一个蓝牙配置文件,允许设备通过蓝牙模拟传统的串行端口通信。它通常用于无线串口连接,允许设备如计算机和外设(例如打印机或条形码扫描器)之间进行数据传输。A…...
![](https://i-blog.csdnimg.cn/direct/b8d811a072cb42139a883723bb64f486.jpeg)
moviepy 将mp4视频文件提取音频mp3 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...
![](https://www.ngui.cc/images/no-images.jpg)
imageio 图片转mp4 保存mp4
目录 安装: imageio 图片转mp4 numpy 保存mp4 安装: FFMPEG: pip install imageio[ffmpeg] pyav: pip install imageio[pyav] imageio 图片转mp4 import glob import osimport cv2 import imageio from natsort import natsortedfrom PIL import …...
![](https://i-blog.csdnimg.cn/direct/ab5f9ee1c4644836beb8662006144312.png)
Postman接口测试04|批量运行测试用例、参数化、Mock Server、Cookie鉴权、Newman生成测试报告
目录 十一、Postman批量运行测试用例 十二、实现数据驱动(也称参数化) 1、csv文件 1️⃣编辑csv文件 2️⃣更新参数的值 3️⃣修改测试脚本和断言 5️⃣批量运行测试用例 2、Json文件 1️⃣编辑Json文件 2️⃣其他操作和处理csv文件相同 十三、…...
![](https://www.ngui.cc/images/no-images.jpg)
学技术学英语:http状态码 401 Unauthorized vs 403 Forbidden
📢📢📢:先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 unauthorized未授权的/ˌʌnˈɔːθəraɪzd/authentication认证/…...
![](https://i-blog.csdnimg.cn/direct/7941b86d92c547cfa3bdc17012bfcbd7.png)
@LocalBuilder装饰器: 维持组件父子关系
一、前言 当开发者使用Builder做引用数据传递时,会考虑组件的父子关系,使用了bind(this)之后,组件的父子关系和状态管理的父子关系并不一致。为了解决组件的父子关系和状态管理的父子关系保持一致的问题,引入LocalBuilder装饰器。…...
![](https://i-blog.csdnimg.cn/direct/fa6cb9fda727428a8015d240a6ecca88.png)
React(二)——Admin主页/Orders页面/Category页面
文章目录 项目地址一、侧边栏1.1 具体实现 二、Header2.1 实现 三、Orders页面3.1 分页和搜索3.2 点击箭头显示商家所有订单3.3 页码按钮以及分页 四、Category页面4.1 左侧商品添加栏目4.2 右侧商品上传栏 五、Sellers页面六、Payment Request 页面(百万数据加载&a…...
![](https://i-blog.csdnimg.cn/direct/ad1512811c33478894c8463d987cabee.png)
移动端屏幕分辨率rem,less
谷歌模拟器:能直接看到移动端效果 屏幕分辨率 右键电脑桌面 ,点击显示设置 PC端是逻辑分辨率,移动端代码也是参考逻辑分辨率 网页端宽度和逻辑分辨率尺寸相同 手机屏幕尺寸不同,网页宽度均为 100% 所以就需要添加视口标签&#x…...
![](https://i-blog.csdnimg.cn/direct/4695e9fa772c4e16a6d655fa80f20865.png)
Docker Desktop 构建java8基础镜像jdk安装配置失效解决
Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像,前几天我使用Docker Desktop环境重新构建了一个…...
![](https://i-blog.csdnimg.cn/direct/aced6c384ac242829f7c1b179441b822.png)
数据结构:栈(Stack)和队列(Queue)—面试题(一)
目录 1、括号匹配 2、逆波兰表达式求值 3、栈的压入、弹出序列 4、最小栈 1、括号匹配 习题链接https://leetcode.cn/problems/valid-parentheses/description/ 描述: 给定一个只包括 (,),{,},[,] …...
![](https://i-blog.csdnimg.cn/direct/2b1951aae9684dccbf394ae22667374f.gif)
AR 眼镜之-拍照/录像动效切换-实现方案
目录 📂 前言 AR 眼镜系统版本 拍照/录像动效切换 1. 🔱 技术方案 1.1 技术方案概述 1.2 实现方案 1)第一阶段动效 2)第二阶段动效 2. 💠 默认代码配置 2.1 XML 初始布局 2.2 监听滑动对 View 改变 3. ⚛️…...
![](https://i-blog.csdnimg.cn/img_convert/5f5ec0c78a1f491ebae3cbe34ee4526f.webp?x-oss-process=image/format,png)
2025年中科院分区大类划分公布!新增8155本
2025年中科院分区表变更情况 扩大收录范围 2025年的期刊分区表在原有的自然科学(SCIE)、社会科学(SSCI)和人文科学(AHCI)的基础上,增加了ESCI期刊的收录,并根据这些期刊的数据进行…...
![](https://www.ngui.cc/images/no-images.jpg)
S变换matlab实现
S变换函数 function [st,t,f] st(timeseries,minfreq,maxfreq,samplingrate,freqsamplingrate) % S变换 % Code by huasir Beijing 2025.1.10 % Reference is "Localization of the Complex Spectrum: The S Transform" % from IEEE Transactions on Signal Proc…...
![](https://i-blog.csdnimg.cn/direct/5eed63a0ddae4fe999c40752b5d78623.png)
Springboot——钉钉(站内)实现登录第三方应用
文章目录 前言准备1、创建钉钉应用,并开放网页应用2、配置网页应用各项参数发布版本 前端改造后端逻辑1、获取应用免登录 Access_token2、通过免登录 Access_token 和 Auth_Code 获取对应登录人信息 注意事项 前言 PC端的钉钉中工作台,增加第三方应用&a…...
![](https://i-blog.csdnimg.cn/img_convert/3ef0b3d2e518d98ab54c273c67b50d5e.png)
基于深度学习算法的AI图像视觉检测
基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今,它被广泛用于图像分类、人脸识别、图像中物体的识别等。那么什么是深度学习?深度学习是如何应用在视觉检测上的呢? 什么是深度学习? 深度学习是…...
![](https://www.ngui.cc/images/no-images.jpg)
cJson——序列化格式json和protobuf对比
cJson——序列化格式json和protobuf对比 1. 更小的消息体积2. 更快的序列化与反序列化速度3. 类型安全4. 向后和向前兼容性5. 更低的带宽消耗6. 高效的编码方式7. 易于跨语言支持8. 支持复杂的数据结构9. 更好的支持大型数据交换总结 Protocol Buffers (Protobuf) 和 JSON 都是…...
![](https://www.ngui.cc/images/no-images.jpg)
搭建一个fastapi的项目,调用ollama服务
1. 项目结构 my_project/ │ ├── app/ │ ├── main.py # FastAPI应用的入口 │ ├── services/ # 包含服务逻辑 │ │ └── ollama_service.py │ ├── models/ # 定义数据模型 │ │ └── response.py │ ├─…...
![](https://www.ngui.cc/images/no-images.jpg)
Wireshark编译手册(Windows)
以下是对 Wireshark 官方文档中“Windows 平台的设置和构建说明”部分的翻译和总结: 2.2. Windows 平台 本节提供了在 Windows 上进行 Wireshark 开发的快速设置指南,包含推荐的配置。 2.2.1. 使用 Microsoft Visual Studio 注意:除非您非…...
![](https://www.ngui.cc/images/no-images.jpg)
在高德地图上加载3DTilesLayer图层模型/天地瓦片
1. 引入必要的库 Three.js:一个用于创建和显示3D图形的JavaScript库。vuemap/three-layer:一个Vue插件,它允许你在高德地图中添加Three.js图层。vuemap/layer-3dtiles:一个用于处理3D Tiles格式数据的Vue插件,可以用来…...
![](https://i-blog.csdnimg.cn/direct/c3316060c4174e568df5d076c0f005c7.png)
深入浅出负载均衡:理解其原理并选择最适合你的实现方式
负载均衡是一种在多个计算资源(如服务器、CPU核心、网络链接等)之间分配工作负载的技术,旨在优化资源利用率、提高系统吞吐量和降低响应时间。负载均衡的实现方式多种多样,以下是几种常见的实现方式: 1. 硬件负载均衡&…...
![](https://img-blog.csdnimg.cn/20201024165104709.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1B1cnN1ZUx1bw==,size_16,color_FFFFFF,t_70#pic_center)
wordpress两个侧边栏/百度学术论文查重
文章目录1. 栈2. 自己实现2.1. 顺序栈2.1.1. 入栈2.1.2. 出栈2.1.3. 测试结果2.2. 链栈2.2.1. 入栈2.2.2. 出栈2.3.3. 测试结果3. 使用库3.1. ArrayList3.2. LinkedList3.3. ArrayDeque1. 栈 满足先进后出(FILO)规则,且只能在一端进行操作的…...
![](/images/no-images.jpg)
网站建设的软件有哪些/免费刷粉网站推广免费
伯克利人工智能实验室博客:http://bair.berkeley.edu/blog/ 下雨天: 有些人能听见下雨的声音,有些事只是在奔跑中淋湿! We are all in the gutter, but some of us are looking at the stars.Oscar Wilde我们都生活在阴沟里&#…...
![](https://img-blog.csdnimg.cn/img_convert/114f32a787a47fc5c6b9e8410b78aa41.png)
购物网站支付功能怎么做/在线网页制作
今天和大家分享一个能在手机上演示的高保真移动端元件库。 43页完整版案例(含页面跳转交互)预览地址:https://axhub.im/ax9/bace41c00c111653/#g1 135页元件库(只含单页交互)预览地址:https://axhub.im/a…...
![](https://img-blog.csdnimg.cn/img_convert/9e4c72ef6559356f4f0818ba0d2798b2.png)
杭州网站建设公司有哪几家/陕西网站建设网络公司
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。更多交流私我132-陆零伍陆-20-291、μClinuxμClinux是一种优秀的…...
![](/images/no-images.jpg)
网站怎么做充值系统下载/最新疫情19个城市封城
题目描述: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[-][1-9]"."[0-9]E[-][0-9],即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也…...
![](https://images2015.cnblogs.com/blog/872567/201611/872567-20161120080141154-66402508.png)
电子网站建设考试/手机广告推广软件
本文主要讲如何自定义NSOperation,以及自定义NSOperation的一些注意事项,以下载图片为例。 新建一个类,继承于NSOperation。 CustomOperation.h 代码 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h>interface Custo…...