Java数据结构: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;
        }

为什么设置为静态的:
静态内部类不需要外部类实例化,可以直接实例化. 但是不能访问外部类的字段.而 此处的Node不需要访问LinkedList的字段,这样设计更方便,合理.

构造方法

  1. LinkedList() //默认容量是0

  2. LinkedList(Collection<? extends E> c) //将集合中的元素全部加入到链表中

    public LinkedList(Collection<? extends E> c) {
        this();
        addAll(c);
    }
  • 头尾插入或删除时间复杂度为O(1) 对中间进行查找或删除插入时间复杂度为O(n) 需要next遍历.

LinkedList类特有的方法

void addFirst(E e)    //在表头添加元素
void addLast(E e)    //在表尾添加元素
	
E getFirst()        //获取表头元素 
E getLast()        //获取表尾元素 
				
E removeFirst()   //删除取表头元素 
E removeLast()    //删除取表尾元素 

链表的典型应用—缓存淘汰策略算法

  1. FIFO—First In First Out—先进先出算法
  2. LRU—Least Recently Used—最近最久未使用算法
  3. LFU—Least Frequently used—最近最少使用算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值