LinkedList集合实现原理(即链表实现原理)

LinkedList是由链表实现的(它同时继承了List和Deque双端队列接口)

链表是:一个整体中有三个部分,
1、第一个部分存放的是“前一个的地址”
2、第二个部分存放的是“自己的具体内容”
3、第三个部分存放的是“后一个的地址”

代码实现原理:

节点类(Node<E>):
	E item;		//代表第二部分,存放自己的内容
	Node<E> next;	//代表第一个部分,存放后一个的地址
	Node<E> prev;	//代表前一个部分,存放前一个的地址

链表集合(LinkedList<E>):
	存在两个标识节点:
	1、Node<E> first;	//存储链表的第一个节点
	2、Node<E> last;	//存储链表的最后一个节点

注意:
1、(源码)追加值:

void linkLast(E e) {
        final Node<E> l = last;		//获取链表最后一个元素
        final Node<E> newNode = new Node<>(l, e, null);	//创建追加的元素节点
        last = newNode;		//因为是追加,所以链表最后位变成追加的节点
        if (l == null)		//如果链表最后一个元素为空,说明链表为空,则第一个元素也为当前追加的节点
            first = newNode;
        else			//链表不为空,则原来最后一个节点存储当前追加节点的地址
            l.next = newNode;
        size++;			//链表大小加一
        modCount++;
    }

2、(源码)插入首位:

private void linkFirst(E e) {
        final Node<E> f = first;	//获取链表第一个节点
        final Node<E> newNode = new Node<>(null, e, f);	//自己的新节点
        first = newNode;	//第一个节点变为自己
        if (f == null)		//原来链表为空,则最后一个节点也为自己
            last = newNode;
        else			//不为空,原来第一个节点的prev存储我的地址
            f.prev = newNode;
        size++;			//大小加一
        modCount++;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值