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

LinkedList 里面还有个具有添加功能的函数,上回学漏了,这回补上。

它就是linkBefore()------在一个非空节点前,插入数据

这里打上个断点

点击下一步。先把size除二  ,去比较。具体的这个node()方法,我们之前学过,这里跳过。这个方法,其实就是返回我们要查找索引位的节点的地址。

然后我们再点击下一步,这里的第一步,第二步,第三步。我们都看到很多次这种套路了,因为我们要在succ节点前插入数据e,

所以先保存这个节点的前置节点的地址给 pred。 然后创建新节点,把e 放进这个新节点,然后让新节点指向 succ节点的前置节点,并且让新节点指向这个succ节点。 然后让 succ的前置节点 也指向新节点,因为我们的链表是双向链表

 

这里再次点击下一步。这里需要判断 是否succ的前置节点是否为空,也就是succ是否是第一个节点

如果为null(说明succ是第一个节点),那么就把first 引用新节点,那么就是把的新节点作为第一个节点。这里我们是false

再次点击下一步。让 succ的前置节点 指向新节点,然后size++,modCount++,这个方法就调用结束了。

 

下面是图解:

 

猜你喜欢

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