• LinkedList的源码


      

    LinkedList

    LinkedList是通过双向链表去实现的,他的数据结构具有双向链表的优缺点,既然是双向链表,那么的它的顺序访问效率会非常高,而随机访问的效率会比较低,它包含一个非常重要的私有内部静态类:Node

    private static class Node<E> {
       E item; // 节点的元素
       Node<E> next; // 下一个节点
       Node<E> prev;  // 上一个节点

       Node(Node<E> prev, E element, Node<E> next) {
           this.item = element;
           this.next = next;
           this.prev = prev;
      }
    }

     

    get方法:本质上还是遍历链表中的数据

        Node<E> node(int index) {
           // assert isElementIndex(index);
    // index 和 长度的一半比较
           if (index < (size >> 1)) {
               Node<E> x = first;
               // 从头开始循环
               for (int i = 0; i < index; i++)
                   x = x.next;
               return x;
          } else {
               Node<E> x = last;
               // 从尾部开始循环
               for (int i = size - 1; i > index; i--)
                   x = x.prev;
               return x;
          }
      }

     

    set方法

    public E set(int index, E element) {
       checkElementIndex(index);// 检查下标是否合法
       Node<E> x = node(index); // 根据下标获取对应的node对象
       E oldVal = x.item; // 记录原来的值
       x.item = element; // 赋予新的值
       return oldVal; // 返回修改之前的值
    }

     

  • 相关阅读:
    11111
    JavaScript基础
    CSS使用
    CSS 基本
    前端之HTML
    Python 迭代器和生成器
    Python day11
    Python 函数
    第十七篇:django基础(二)
    第十六篇:django基础
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/15845829.html
Copyright © 2020-2023  润新知