linkedlist类的特点是_最详细集合源码解析之LinkedList集合源码解析

LinkedList集合特点就是增删快,查询慢,这种特性的主要原因就是其内部是通过链表来做为存储数据的数据结构,先看下内部整体结构。

LinkedList整体结构73cad867fba3ddc45575087ecf773f10.png619d2b77773b7ec45abf66b12752caba.png

这里主可以看到,和ArrayList的继承结构大致差不多,这里LinkedList实现了Queue,可以实现一些队列的操作,先带大家看下LinkedList的内部的Node内部类的结构,这个是完成数据存储的核心部分,所有的操作都是围绕Node来展开的。

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

Node是LinkedList的静态内部类,主要就是三个变量,一个就是真正要存入的值,一个是是后继结点,一个是前驱结点,可以看出这是个双向链表,只提供了一个构造函数,完成数据的存储,可以看出数据结构的精美,几行代码就构筑了整个LinkedList的基石。

transient Node last;

/*
    *  记录集合长度
     */
/**
     * 链表的尾节点
     */

构造函数解析

     public LinkedList(Collection extends E> c) {
   
        this();
        addAll(c);
    }

传入一个集合,主要就是通过调用addAll方法来完成数据的插入。

 public boolean addAll(int index, Collection extends E> c) {
   
        checkPositionIndex(index);

        Object[] a = c.toArray();//转成数组
        int numNew = a.length;//获取数组长度
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值