LinkedList 内部是用双向链表实现的。可以为空,可以重复,是有序的,线程不安全。
实现原理
属性:
1.size 长度
2.node<E> first 第1各元素
3.node<E> last 最后一个元素
内部类
Node<E> 里面有3个属性,E element, Node<E> pre, Node<E> next; 构造方法NOde(Node pre,E e,Node next)
方法
#增
1.add(E e) 默认是往链表的最后一个添加元素。所以我们要获取最后一个元素、然后new一个node出来,new的时候用Node<E>的构造方法,参数是(last,E,null)因为之前获取最后一个元素,放在我new的元素前一个,然后第2个参数就是当前元素的值,因为加在最后一个所以next默认是null。然后 我们要判断刚刚获取的最后一个元素是不是null,如果是null的,证明他是第1次加入链表里面,所以我们这个时候要把 属性first 给刚刚新new出来的对象。如果不是null,那么我们刚刚获取最后一个元素的next指向new出来的对象。最后size++就可以了
#查询
2.get(index) 根据索引获取,这边用到1次2分法查询。先判断 index 和 size>>1 比较,如果index> siez>>1的话,那么就表示要查询的index在size/2的下半段。那这样只要循环下半段,如果小于的话,那就在上半段。只要循环上半段,
3删除
reomve(index) 这边记得 最后要把删的元素设置成null