java -- LinkedList
LinkedList是一个简单的数据结构,与ArrayList不同的是,他是基于链表实现的。
优点
- 插入和删除操作比 ArrayList 更加高效
- LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
- 不需要连续的存储空间,只需要有指向上一个节点和下一个节点的标记就好
- 可以接受各种数据类型
- LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。
缺点
- 随机访问的效率比ArrayList差,但是顺序访问还是可以的
- 非线程安全
工作原理
LinkedList底层的数据结构是基于双向循环链表的,且头结点中不存放数据,如下:
既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点位置信息,如下图所示:
构造方法
LinkedList有两种构造方法:
- 第一个构造方法不接受参数,将header实例的previous和next全部指向header实例(注意,这个是一个双向循环链表,如果不是循环链表,空链表的情况应该是header节点的前一节点和后一节点均为null),这样整个链表其实就只有header一个节点,用于表示一个空的链表。
- 第二个构造方法接收一个Collection参数c,调用第一个构造方法构造一个空的链表,之后通过addAll将c中的元素全部添加到链表中。
第一种情况如下图:
// 第一种构造函数 public LinkedList() { header.next = header.previous = header; } // 第二种构造函数 public LinkedList(Collection<? extends E> c) { this(); addAll(c);
插入、修改、数据存储
- 插入数据add(e),会插入到最尾,修改指针指向的节点就好,如果add(index, e)也是同样的道理,所以也是非常快
- 修改、查找数据set(index, e), get(index),复杂度是O(n/2),虽然不是O(n),但怎么都比数组要慢。同时,查到某个节点后,可以查前一个和后一个节点。
- 删除remove(index),与ArrayList比较而言,LinkedList的删除动作不需要“移动”很多数据,从而效率更高。
相关推荐
本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作时,LinkedList相对于ArrayList的性能优势。 ArrayList是基于动态数组的数据结构,它在内存中连续存储元素。由于数组的特性,访问任意...
计算机后端-Java-Java核心基础-第24章 集合01 15. LinkedList的源码分析.avi
在Java编程语言中,`ArrayList`、`LinkedList`、`Vector`和`Map`是四种常用的集合类,它们各自有着不同的特性和用途。本篇文章将深入探讨这些数据结构及其使用场景。 首先,我们来了解`ArrayList`。`ArrayList`是`...
4. **集合框架**:Java集合框架提供了丰富的数据结构,如ArrayList、LinkedList、HashMap等,用于存储和操作数据。理解这些类的使用及底层原理对于实际开发至关重要。 5. **输入输出流**:Java的IO流系统支持读写...
在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现机制,通过源码分析来揭示它们在性能、...
集合框架是Java处理数据集合的重要工具,包括List、Set、Map等接口以及ArrayList、LinkedList、HashSet、HashMap等实现类。学习如何根据需求选择合适的集合类型,以及如何使用迭代器、泛型等高级特性,能提升代码的...
Java中的类库丰富,例如集合框架(ArrayList、LinkedList、HashMap等)是编程中常用的数据结构,需要熟悉其用法。 在Java SE(标准版)的学习中,会涉及到输入/输出(I/O)流、异常处理、线程、反射和注解等关键...
基于双向链表实现的列表,支持在任意位置的插入和删除操作。
非常简单的Java LinkedList 应用实例
Java API(应用程序接口)是Java编程语言的核心组成部分,它提供了大量的类库,使得开发者能够构建功能丰富的应用程序。这个中文版的“JAVA-API帮助文档”是一个非常宝贵的资源,它包含了Java API的各种经典讲解实例...
Java是世界上最流行的编程语言之一,尤其在企业级应用和服务器端开发中占据着主导地位。本面试课程"java-面试课程介绍0001"旨在帮助求职者掌握Java核心技术,以便在面试中脱颖而出。课程涵盖了从基础知识到高级特性...
数组是存储相同类型元素的固定大小的序列,而集合框架则是更灵活的数据结构,如ArrayList、LinkedList、HashSet、HashMap等。学习者将学习如何声明、初始化和操作数组,以及如何使用集合框架处理复杂的数据存储需求...
4. **集合框架**:Java提供了丰富的集合类,如ArrayList、LinkedList、HashMap等,用于存储和操作数据。 5. **输入/输出(I/O)**:Java的I/O流系统支持文件读写、网络通信等,是处理数据交换的关键。 6. **多线程**...
Java中的基本数据结构包括数组(Array)、链表(LinkedList)、栈(Stack)、队列(Queue)等。数组是最基础的结构,它提供了一种按索引访问元素的方法,但插入和删除操作效率较低。链表解决了数组在动态扩展时的...
此外,集合框架是Java标准库的重要组成部分,包括List、Set、Map等接口以及ArrayList、LinkedList、HashSet、HashMap等实现类。示例代码会解释如何创建和操作这些集合,以及如何使用迭代器和泛型来增强代码的灵活性...
同时,学习如何使用Java集合框架,如ArrayList、LinkedList、HashMap等,它们提供了存储和操作数据的有效方式。 对于初学者,理解IO(输入输出)和NIO(非阻塞I/O)也很重要,它们用于读写文件、网络通信等。此外,...
在Java编程领域,"Java-Mail-list.zip_JAVA list通讯录"是一个示例项目,它展示了如何使用Java语言来实现一个基本的通讯录系统。这个项目包含添加联系人、搜索联系人、删除联系人以及查询联系人等核心功能,是学习...
Java集合框架是Java编程语言中的一个核心特性,它为存储、管理和操作对象提供了一组高效且灵活的数据结构。本项目“1-Collections-Overview-Section-Java-Collections-S_overview”着重于概述Java集合框架的基本概念...
### Java Collections Framework 1016 #### 一、教程概览 本教程由developerWorks提供,旨在深入探讨Java Collections Framework。它不仅适用于初学者,也适合具有一定经验的开发人员。教程从简单的编程示例开始,...