LinkedList 源码 阅读

  1. 查看LinkedList 属性
    在这里插入图片描述

    发现有两个node 一个开始node, 一个结束node
    点击查看node 对象
    在这里插入图片描述

  2. 查看add 方法
    在这里插入图片描述
    e 是add 过来的值,
    final Node l = last;// 最后一个node 赋值给 l node
    final Node newNode = new Node<>(l, e, null); // 构建一个新的node 传入 最后一个node 和当前值
    last = newNode; // 将新的node 赋值个结束node
    if (l == null) // 首次添加
    first = newNode; // 将新的node 给 开始node
    else // 后续添加
    l.next = newNode; // 设置上一个node 引用当前node
    size++; // 集合大小 +1;
    modCount++; // 修改次数+1

  3. get 方法 源码在这里插入图片描述
    1.检查索引是否>0 并且小于 size
    在这里插入图片描述

  4. 获取值
    在这里插入图片描述
    Node node(int index) {
    // assert isElementIndex(index);

    if (index < (size >> 1)) { // 是判断当前索引是否< size的一半, 假如 size 是 8 这里就是 4 意思就是一半在开始node 查找 , 一半在结束node 查找,
    Node x = first; // 前一半查找使用开始node查找
    for (int i = 0; i < index; i++) // 查找node 的下一个node
    x = x.next;
    return x;
    } else {
    Node x = last; // 后一半查找使用结束node查找
    for (int i = size - 1; i > index; i–)// 查找node 的上一个node
    x = x.prev;
    return x;
    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值