尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LinkedList与链表
一.ArrayList 的特性1. 访问效率高基于数组实现支持随机访问通过索引 get(int index)时间复杂度为 O(1)这是 ArrayList 对比 LinkedList 最核心的优势LinkedList 随机访问是 O(n)。2. 增删效率分场景尾部增删add (E e)/remove (size-1)效率高时间复杂度 O(1)无扩容时中间 / 头部增删add (int index, E e)/remove (int index)需要移动后续元素时间复杂度 O(n)效率低原因数组元素在内存中是连续存储的中间插入 / 删除会导致后续元素整体移位。3. 线程不安全ArrayList 是非线程安全的集合多线程环境下同时读写会导致数据错乱如 ConcurrentModificationException解决方案使用 Collections.synchronizedList(new ArrayList()) 包装成线程安全版本用 CopyOnWriteArrayList并发包下写操作时复制数组读写分离适合读多写少场景。4. 空值与重复元素允许存储 null 值可以通过 add(null) 添加允许存储重复元素如 add(“a”); add(“a”) 是合法的。5. Cloneable 与浅拷贝1.ArrayList 实现了 Cloneable 接口调用 clone() 方法会返回一个新的 ArrayList 实例但同样是浅拷贝2.新 ArrayList 的数组是新对象但数组中的元素引用类型仅复制引用地址示例如果 ArrayList 中存自定义类对象修改原对象会影响克隆后的 ArrayList 元素。二.链表链表的概念和结构链表是一种物理存储结构上非连续存储结构数据元素的逻辑顺序是通过链表中的引用链接次序实现的。一.链表的种类链表的种类有8种其中的主要分类可以是1.带头和不带头带头节点的实现classNode{intdata;Nodenext;publicNode(intdata){this.datadata;this.nextnull;}}classLinkedList{Nodehead;// 头结点不存储实际数据publicLinkedList(){headnewNode(-1);// 初始化头结点}// 添加节点publicvoidadd(intdata){NodenewNodenewNode(data);Nodecurrenthead;while(current.next!null){currentcurrent.next;}current.nextnewNode;}// 删除节点publicvoiddelete(intdata){Nodecurrenthead;while(current.next!null){if(current.next.datadata){current.nextcurrent.next.next;return;}currentcurrent.next;}}}不带头的链表实现classNode{intdata;Nodenext;publicNode(intdata){this.datadata;this.nextnull;}}classLinkedList{Nodehead;// 直接指向第一个有效节点publicLinkedList(){headnull;// 初始化为空}// 添加节点publicvoidadd(intdata){NodenewNodenewNode(data);if(headnull){headnewNode;}else{Nodecurrenthead;while(current.next!null){currentcurrent.next;}current.nextnewNode;}}// 删除节点publicvoiddelete(intdata){if(headnull)return;if(head.datadata){headhead.next;return;}Nodecurrenthead;while(current.next!null){if(current.next.datadata){current.nextcurrent.next.next;return;}currentcurrent.next;}}}关键区别初始化带头结点的链表初始化时创建一个虚拟头节点不带头结点的链表直接初始化为null。插入/删除操作带头结点的链表无需单独处理头节点为空的情况不带头结点的链表需要额外判断头节点是否为空。代码复杂度不带头结点的链表在操作头节点时需要更多边界条件判断带头结点的链表逻辑更统一。2.单向和双向// 单向链表节点classSinglyNode{intdata;SinglyNodenext;}// 双向链表节点classDoublyNode{intdata;DoublyNodenext;DoublyNodeprev;}复杂度对比操作单向链表双向链表插入/删除头部O1O1插入/删除尾部OnO(1)插入/删除中间部O(n)O(1)逆向遍历不支持O(n)3.循环和非循环循环的代码实现片段classNode{intdata;Nodenext;Node(intdata){this.datadata;}}非循环的代码实现片段// 创建循环链表NodeheadnewNode(1);head.nextnewNode(2);head.next.nexthead;// 尾节点指向头节点NodeheadnewNode(1);head.nextnewNode(2);// 尾节点默认next为null循环链表的尾节点指向头节点形成一个闭环结构。这种设计允许从任意节点出发遍历整个链表适用于需要循环访问的场景。非循环链表的尾节点指向null表示链表结束。遍历时需从头节点开始到达尾节点时终止结构简单且直观。二.链表中的重要方法方法作用void addFirst(int data)在头部插入数据void addLast(int data)在尾部插入数据void addIndex(int index,int data)在index位置处插入数据boolean contains(int key)判断key元素是否在链表中void remove(int key)移除链表中的第一次出现的key元素void removeAllKey(int key)移除所有的出现的key元素int size()访问数组的长度void display()打印链表的val值void clear()将链表的元素清空
RELATED

相关推荐

如何用8GB显卡玩转4K视频生成:阿里WanVideo_comfy完整指南

如何用8GB显卡玩转4K视频生成:阿里WanVideo_comfy完整指南

如何用8GB显卡玩转4K视频生成:阿里WanVideo_comfy完整指南 在AI视频生成领域,专业工具普遍存在"高门槛、高成本、高复杂度"的三高问题,让普通创作者望而却步。阿里巴巴通义万相团队开源的WanVideo_comfy项目通过ComfyUI生态实现电…

📅 2026/11/3 18:45:48
WanVideo_comfy:8GB显存玩转电影级视频生成,ComfyUI生态终极解决方案

WanVideo_comfy:8GB显存玩转电影级视频生成,ComfyUI生态终极解决方案

WanVideo_comfy:8GB显存玩转电影级视频生成,ComfyUI生态终极解决方案 2025年AI视频生成领域迎来重大技术突破,阿里巴巴通义万相开源的WanVideo_comfy项目通过创新量化技术和模块化设计,将14B参数的大型模型压缩至消费级GPU可运行的…

📅 2026/11/3 18:45:48
腾讯SongGeneration:AI音乐创作的终极解决方案

腾讯SongGeneration:AI音乐创作的终极解决方案

腾讯SongGeneration:AI音乐创作的终极解决方案 在AI音乐生成领域迎来重要突破,腾讯开源的SongGeneration项目凭借其创新的LeVo架构,为音乐创作带来了革命性的技术突破。该项目不仅实现了从文本到高质量音乐的完整生成流程,更通过…

📅 2026/11/3 18:45:48
MORE NEWS

更多资讯

📰

控制系统能控性:原理、判据与工程实践

1. 能控性判断的本质与工程意义能控性(Controllability)是现代控制理论中最基础也最重要的概念之一。简单来说,它回答了一个根本问题:我们能否通过合适的控制输入u(t),在有限时间内将系统从任意初始状态驱动到任意目标…

📰

华为M-LAG技术解析与数据中心高可用实践

1. M-LAG技术概述M-LAG(Multichassis Link Aggregation Group)是华为推出的一项多设备链路聚合技术,它允许两台物理交换机在逻辑上虚拟成一台设备,与下游设备建立跨设备的链路聚合组。这项技术最早出现在华为CE系列交换机上&#…

📰

微信小程序实现城市智慧停车巡检系统开发指南

1. 项目概述:城市路边停车巡检系统的微信小程序实现这个项目本质上是通过微信小程序构建一套完整的城市路边停车巡检管理系统。作为城市智慧交通的重要组成部分,这类系统正在全国范围内快速普及。根据我的实际项目经验,传统巡检方式存在三大痛…

📰

Testing Library与user-event前端测试实践指南

1. Testing Library 用户事件测试体系解析在现代前端测试领域,Testing Library 配合 user-event 库已经成为模拟用户交互的黄金标准组合。这套工具链通过高度贴近真实用户操作行为的 API 设计,彻底改变了我们编写前端测试用例的方式。与传统的 fireEvent…

📰

TRIZ功能分析:从功能定义到功能模型与系统裁剪

简介:这份PPT围绕TRIZ发明创新理论中的系统功能分析与剪裁展开,面向产品设计、工程创新学习者以及需要做系统问题诊断的技术人员,帮助其从功能视角拆解技术系统、识别有害与不足功能,并据此寻找简化结构、降低成本的改进方向。压缩…

📰

RHEL 6.4 ISO校验、本地yum源与Kickstart离线部署指南

简介:面向需要搭建或复现早期企业级 Linux 实验环境的运维学习者与系统管理员,这份文档整理并提供了 Red Hat Enterprise Linux Server 6.4 的获取入口,适合用于虚拟机安装、基础命令练习、服务部署实验及老系统兼容性测试等场景。压缩包内共…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬