集合源码解析:LinkedList的底层实现原理

本文深入剖析了Java中LinkedList的底层实现,详细介绍了其双向链表结构,包括节点构造、头尾指针机制,以及add、remove、get等核心方法的实现原理。

jdk7.0源码解析LinkedList底层实现原理


一、LinkedList的概述

LinkedList是List接口的实现类,底层用双向链表实现,有序、有下标、元素可以重复;线程不安全,因为底层方法为非同步。

二、LinkedList的存储结构

底层通过双向链表来实现,链表的每一个节点为Node,除了自身的数据域之外,还有一个前指针(prev)和后指针(next),分别指向前驱节点和后续节点(没有就为null)。同时双向链表还有一个first指针指向头结点,和 last指针指向尾节点,实现结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPueku8h-1586449403207)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1572943652483.png)]

三、LinkedList内部实现原理机制(源码解析)
  1. LinkedList的基本元素

    public class LinkedList<E>
        extends AbstractSequentialList<E>
        implements List<E>, Deque<E>, Cloneable, 
                   java.io.Serializable
    {
         
         
    	// 记录集合中元素的个数
        transient int size = 0;
        
    	// 指向头结点
        transient Node<E> first;
        
        //指向尾节点
        transient Node<E> last;
    
  2. 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;
        }
    }
    
  3. LinkedList中的构造方法:

    // 无参数的构造方法 
    public LinkedList() {
         
          }
    
    /* 将Collection类型的集合作为参数构建LinkedList
       同时将Collection集合中的所有元素存储在构建的
       LinkedList集合中,调用addAll方法
    */
    public LinkedList(Collection<? extends E> c) {
         
         
        this();
        addAll(c);
    }
    
  4. <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值