源码之LinkedList

本文详细解析了LinkedList的数据结构和常见方法,如getFirst、getLast、removeFirst、removeLast等。讲解了如何进行头插、尾插,以及add、remove、contains等操作的实现逻辑。特别强调了在处理null值时避免NullPointerException的重要性,同时介绍了addAll方法的实现,包括在链表特定位置插入元素的细节。此外,还涵盖了get、set、clear等方法的工作原理,以及unlink方法在删除节点时的关键步骤。LinkedList还可用于实现队列,具备更多相关功能。
摘要由CSDN通过智能技术生成

源码之LinkedList

Linked List:首先LinkedList底层是一个双向的链表、链表的结点是带有前驱节点和后继节点、以及值item 的结点。
在这里插入图片描述
在这里插入图片描述

常见的方法:

getFirst 和 getLast方法将链表的第一个结点或者尾结点保存、如果首或尾结点为空的话、抛出异常、否则返回结点的值。
在这里插入图片描述

在这里插入图片描述

RemoveFirst 和 remove Last方法将first 或者 last结点的值赋给l,判断l是否为空、为空就抛出异常、否则调用unlinkFirst和unlinkLast方法来删除头或者尾结点。
在这里插入图片描述

头插、尾插
在这里插入图片描述

AddFirst 和addLast 方法分别调用了linkFirst:如果链表的first节点是空的话、插入的节点也是链表的last,否则将传入的值插入到链表的first前size++、linkeLast方法也是类似的。
在这里插入图片描述

代码的逻辑也是很清楚的。
在这里插入图片描述

conttains方法调用的indexOf方法
在这里插入图片描述

indexOf方法如果为null的话、返回对应的index下标、不为null的话使用equals方法来判断要找的值是否存在与链表中。当x == null 的时候、还没有找到的话、返回-1.
add方法和size方法
add方法调用的时linkLast方法、也就是每次使用add方法来增加 元素的时候、都是将元素插入到链表的尾部的。每次进行插入和删除的操作的时候、链表对应的size就++或者–。
在这里插入图片描述

Remove方法
在这里插入图片描述

代码的逻辑也是非常的清楚的。根据传入的结点的item来删除对应的结点、如果链表里面存的是引用类型的值的话、那么也有可能存的结点的值本来就是null、所以要使用 == 来判断是不是null、如果使用的equals 的方法来判断null的话、来看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值