LinkedList 深入解析
1. LinkedList 基础介绍
1.1 重要的私有属性和构造器
1.11私有变量
重要的私有属性有三个, LinkedList的节点个数, 链表的首节点和链表的末节点. 这样设置的原因显而易见, 首先节点个数是我门经常使用的甚至作为循环控制条件的, 首节点末节点对于没有继承随机访问类的LinkedList来说(继承的顺序访问类)是最重要的开端是其他算法的基础.
这里的私有变量 first和last只是声明了却没有实例化, 因此在没有实例化的情况下一定是Null.
1.12 无参构造器
这个无参构造器就啥都不干哈哈哈哈哈, 因为它干的事都被私有变量声明的时候给干完了. 我们要实现的无非是size为0, 首节点末节点为null, 看看上面的私有变量的初始化是不是就是这回事.
1.13 有参构造器
这个有参构造器比较牛逼哈, 只要传进来个collection对象直接把你的元素全部放到我这里. 具体操作看一会addAll的解析.
1.2 Node Helper类 LinkedList类的精华
Node Helper类是LinkedList的基础类型就像ArrayList的底层数据结构是数组.
Node的构造器很简单就是把传进来的对象赋值给item, item是对象或值, first, last是前后节点.
注意这里没有写无参构造器意味着new的时候必须传入参数不会自动生成无参构造器.
同时< E > 限制了这个Node的中所有带这个泛型的参数的数据类型, 但是Node是一次声明一个不同于容器声明一次一只调用, 怎么才能限制所有Node的类型整齐? 秘密就在于Node是LinkedList的私有类是不对外开放的, LinkedList是第一步初始化的限制了它内部的数据的类型, 它把它初始化的类型传给了内部的Node泛型, 因此Node一定是一样的因为是在内部初始化.