`

LinkedList源代码分析

阅读更多
继承AbstractSequentialList,实现List,Deque,Cloneable,Serializable

Deque:一个线性 collection,支持在两端插入和移除元素。deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable


属性:
 private transient Entry<E> header = new Entry<E>(null, null, null); //内部类 实现链表
 private transient int size = 0;  //长度


构造函数:
public LinkedList() {
        header.next = header.previous = header; //指向头
    }


内部类(链表数据结构)
 private static class Entry<E> {
	E element;               //元素
	Entry<E> next;           //下指针
	Entry<E> previous;      //上指针

	Entry(E element, Entry<E> next, Entry<E> previous) { //内部类构造函数
	    this.element = element;
	    this.next = next;
	    this.previous = previous;
	}
    }

添加元素
 public boolean add(E e) {
	addBefore(e, header);
        return true;
    }

接着看一下addBefore
封装链表实现
private Entry<E> addBefore(E e, Entry<E> entry) {
	Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
	newEntry.previous.next = newEntry;
	newEntry.next.previous = newEntry;
	size++;
	modCount++;
	return newEntry;
    }

分享到:
评论

相关推荐

    第三章 LinkedList源码解析1

    LinkedList源码解析 LinkedList是Java中的一种链表实现,它的底层是一个环形双向链表。在 LinkedList 中,节点之间通过引用相互连接,形成一个链表结构。LinkedList 提供了多种方法来操作链表,包括添加、删除、...

    LinkedList源码分析_016.pdf

    《LinkedList源码解析》 LinkedList是Java集合框架中的一员,它是AbstractSequentialList的子类,同时也实现了List、Deque和Cloneable、Serializable接口。LinkedList作为双向链表,支持快速的添加、删除元素,尤其...

    LinkedList源码分析

    ### LinkedList源码分析 #### 一、概述 `LinkedList` 是 Java 集合框架中的一个重要组成部分,它基于双向链表实现。与基于数组的 `ArrayList` 相比,`LinkedList` 在插入和删除操作上更为高效,因为它只需要改变...

    LinkedList源码学习分析

    《LinkedList源码学习分析》 LinkedList作为Java集合框架中的一员,是基于链表数据结构实现的线程不安全容器。本文将深入探讨LinkedList的实现原理、核心方法的代码实现,并对比ArrayList,理解其特性和使用场景。 ...

    LinkedList 部分源码

    ### LinkedList部分源码解析 #### 一、简介 `LinkedList`是Java集合框架的一个重要组成部分,它基于双向链表实现,既支持`List`接口也实现了`Deque`接口,因此可以作为列表、栈或者队列使用。双向链表的每个节点...

    Java集合系列之LinkedList源码分析

    Java集合系列之LinkedList源码分析 概述: 本文详细介绍了Java集合系列之LinkedList的源码分析,主要介绍了LinkedList的底层实现、成员变量、构造器、增删改查方法等。LinkedList是一种基于双向链表的数据结构,...

    Java 中Linkedlist类的源代码

    LinkedList类的源代码分析对于理解其工作原理非常重要,特别是对于学习数据结构和算法的开发者来说。它展示了如何使用链表数据结构来实现动态列表,以及如何通过内部类和指针操作实现高效的插入、删除和遍历操作。...

    ArrayList-LinkedList-源码.rar

    本篇将深入探讨ArrayList和LinkedList的内部实现机制,通过源码分析来揭示它们在性能、使用场景以及内存管理上的差异。 ArrayList是基于动态数组实现的,它的底层数据结构是一个Object[]数组。当我们向ArrayList中...

    JDK1.6中Arraylist,Vector,LinkedList源码

    源码分析时,可以关注以下几个关键点: 1. 容量管理:观察ArrayList和Vector如何进行扩容,了解它们扩容的策略和成本。 2. 插入和删除:比较ArrayList、Vector和LinkedList在插入和删除元素时的代码实现,分析时间...

    Java LinkedList源码分析

    简介  LinkedList 是一个常用的集合类,用于顺序存储元素。 LinkedList 经常和 ArrayList 一起被提及。...本文分析 LinkedList 的具体实现。  继承关系  public class LinkedList  extends AbstractS

    Java基于JDK 1.8的LinkedList源码详析

    今天我们将深入分析LinkedList的源码,了解其内部实现机制和特点。 1. 构造函数 LinkedList提供了两个构造函数,一个是无参构造函数`public LinkedList() {}`,另一个是带参数的构造函数`public LinkedList...

    源码解析jdk7.0集合:LinkedList的底层实现原理.pdf

    在具体源码分析中,Node节点内部类的实现是LinkedList的基础。Node内部类的定义方式是: ```java private static class Node&lt;E&gt; { E item; Node&lt;E&gt; next; Node&lt;E&gt; prev; Node(Node&lt;E&gt; prev, E element, Node...

    Map+List+ArrayList+LinkedList Java源码

    **源码分析** 深入研究这些类的源码,可以帮助我们理解它们是如何在内存中组织数据以及如何执行各种操作的。例如,`HashMap`的哈希函数如何计算元素的桶位置,`ArrayList`如何调整其容量,以及`LinkedList`如何通过...

    Java 集合之LinkedList源码分析

    LinkedList是通过节点的连接实现链表的数据结构,向linkedList中插入或删除元素的速度是特别快,而随机访问的速度相对较慢,这个是由于链表本身的性质造成的,在链表中,每个节点都包含了前一个节点的引用,后一个...

    计算机后端-Java-Java核心基础-第24章 集合01 15. LinkedList的源码分析.avi

    计算机后端-Java-Java核心基础-第24章 集合01 15. LinkedList的源码分析.avi

    Jdk1.6 Collections Framework源码解析(2)-LinkedList

    《Jdk1.6 Collections Framework源码解析(2)-LinkedList》 LinkedList是Java集合框架中的一个重要的类,它是List接口的实现,同时继承了AbstractSequentialList,并实现了Deque接口。LinkedList是一种双链表结构,...

    JAVA利用LinkedList构造栈与队列

    这两个类(Stack和Queue)虽然基于LinkedList实现,但它们都提供了抽象数据类型的接口,隐藏了底层的实现细节,使得代码更具有封装性和可复用性。在实际项目中,如果对性能有较高要求,通常会使用专门的栈(如...

    libiec61850源代码目录结构

    libiec61850是一个开源的IEC61850库,其源代码目录结构说明文件。

    【死磕Java集合】-集合源码分析.pdf

    一、LinkedList源码分析 LinkedList是一种以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用。它实现了List、Queue和Deque接口,使其具有多种使用场景。 LinkedList的继承体系中,它继承了...

    用LinkedList实现队列和栈

    本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 ### 1. 队列(Queue) 队列是一种先进先出(FIFO, First In First Out)的数据结构。在Java中,可以使用`...

Global site tag (gtag.js) - Google Analytics