transient 关键字修饰了三个属性 分别是 size , first , last 首先,我们知道,关键字transient 主要是让其修饰的三个属性存在于内存中,不能够被序列化和反序列化。就是不能被保存。
size 主要记录时容器的大小。
first 指向的时链表中的第一个节点。
last 指向的是链表中的最后一个节点。
我们在俩看看Node<E> 对象的结构是怎样的?
一个静态的类。里面主要由三个部分构成:E 当前节点的对象数据; next 当前节点的下一个节点数据;prev 当前节点的前一个节点数据。这就是我们在看链表结构中。一个典型的双向链表的节点的数据结构。
两个构造函数,一个带参,一个不带参。来创建出一个链表容器。
linkFirst 方法。将传入的对象。作为链表中的第一个节点。modCount 来只于继承的
AbstractSequentialList 中继承 AbstractList 这个抽象类。
用protected 说明是只能被本类及其子类使用。transient 说明其只能存在内存中。不能被序列化和反序列化。其主要是用来记录容器list 结构被修改的次数。
同理,此处也由把对象作为链表的最后一个节点的方法。
在一个非空的节点之前插入一个元素。 在这其中。要考虑到你在要添加的的节点是否是整个链表的第一个节点。如果是。那么整个链表的第一节点在你元素增加之后。就变为你增加的元素的节点了。
取消一个非空的链表的首节点。那么我们就要将当前节点的下一个节点设为整个链表的首节点。但是要注意到如果如果就只有一个节点的情况。
此方法是取消一个非空的链表的中最后一个节点的。正常情况下。把要取消的节点中的前一个节点作为整个链表的最后一个节点。但是要注意。如果就剩下一个节点的时候。