欢迎光临散文网 会员登陆 & 注册

千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

2023-07-17 23:32 作者:青城oooo  | 我要投稿

LinkedList的add与remov底层笔记::


LinkedList:增源码(add)

  public boolean add(E e) {

    linkLast(e);//创建一个集合

    return true;

  }


  void linkLast(E e) {

    final Node<E> l = last; //l = 最后一个元素

    final Node<E> newNode = new Node<>(l, e, null);//创建一个元素node

    last = newNode;//将last 指向这个元素

    if (l == null)//判断有没有last

      first = newNode;//没有最后一个元素就把first指向刚创建的元素

    else

      l.next = newNode;//有就把上一个的next指向new

    size++;

    modCount++;

  }


LinkedList:删源码(remov)


  public E remove() {

    return removeFirst(); //调用removeFirst

  }


  public E removeFirst() {

    final Node<E> f = first;

    if (f == null)//判断要删除的这个集合是不是空的,空的就报错

      throw new NoSuchElementException();

    return unlinkFirst(f);//调用unlinkFirst

  }


  private E unlinkFirst(Node<E> f) {

    // assert f == first && f != null;

    final E element = f.item; //把元素获取出来 返回去

    final Node<E> next = f.next;//next指向下一个元素

    f.item = null;//把元素置空

    f.next = null; // help GC //帮助垃圾回收器

    first = next;//把first 指向下一个元素

    if (next == null) //判断下一个是否为空

      last = null;//空的就last也是空

    else

      next.prev = null;// 不是空的就把下一个元素的 prev值为空 (首个元素没有上一个)

    size--;

    modCount++;

    return element;

  }


千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java的评论 (共 条)

分享到微博请遵守国家法律