源码之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的话、来看