java集合类源码详解-LinkedList(7)-基于JDK8

现在开始学习 LinkedList里面的最后一个删除方法。remove(index),删除指定索引位的节点并返回这个节点保存的数据

下面是调试代码,打上代码,开始追踪,这里我们还没开始写 都应该能猜到了,remove()肯定不是具有删除功能的方法,他的内部肯定调用的是另外一个方法。

点击下一步。指定索引位了,肯定就会检查下标是否 越界。

点击下一步。这个方法之前学过了,

我们再次点击下一步。

再次点击下一步。这里通过node()方法,去找到这个索引位index 对象的节点的 引用(地址)。

node()方法 不看了,之前看过了,直接跳过

再次点击下一步。老套路了,要返回删除节点的数据,自然就要先拿一个变量来保存这个节点的数据

 点击下一步。把要删除节点的下一个节点和删除节点的上一个节点用 两个变量next 和prev 来引用。

再次点击下一步。如果删除节点的前置节点为null(说明删除的节点是第一个节点),那么我们只需要把first 指向 第二个节点,

那么此时的第二个节点就作为新的 第一个节点。这里我们是false

再次点击下一步。这里把prev 的next  指向next 节点。然后被删除的节点的prev 赋为null --也就是删除节点,不指向任何前置节点了

再次点击下一步。这里会判断被删除节点的下一个节点 是否为空。也就是被删除节点是否是没有后置节点,如果是那么就把last指向被删除节点的前置节点。 我们这里是false

再次点击下一步。这里我们将被删除节点的后一个节点的指向 被删除节点的前一个节点。

然后把删除节点的next 赋为null。

后面老套路了,最终返回element就行了。

到这里具有删除功能的方法 就学习完了, 到现在 我们学习了LinkedList的删除,查找,增加。

接下来会学习 LinkedList的遍历 ,也就是具有fail-fast机制的 遍历相关方法。

如果博客有什么问题请指出,大家一起学习进取。 

猜你喜欢

转载自blog.csdn.net/qq_37889257/article/details/84936880
今日推荐