Java 之 LinkedList 集合
一、LinkedList 概述
java.util.LinkedList 集合数据存储的结构是链表结构。
特点:增删快,查询慢
LinkedList 是一个双向链表,如下图

注意:该集合实现不是同步的,多线程的,速度快,效率高。
扩展:LinkedList 集合也作为堆栈,队列的结构使用。
二、LinkedList 的结构
LinkedList:双向链表结构(双向链表、队列、栈、双端队列、单向链表等各种数据结构的效果)
LinkedList 内部有一个结点的类型:

其中还有两个 Node 类型的变量 first与 last,分别来记录第一个结点的地址与最后一个结点的地址。

思考:LinkedList 为什么可以被当做双向链表、栈、队列、双端队列等数据结构使用?
1、如何体现双向链表的?
LinkedList 中提供了大量首尾操作的方法:
void addFirst(E e) :将指定元素插入此列表的开头
void addLast(E e):将指定元素添加到此列表的结尾
E getFirst():返回此列表的第一个元素。
E getLast():返回此列表的最后一个元素
boolean offer(E e):将指定元素添加到此列表的末尾(最后一个元素)。
boolean offerFirst(E e) :在此列表的开头插入指定的元素。
boolean offerLast(E e):在此列表末尾插入指定的元素
int indexOf(Object o):返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
int lastIndexOf(Object o):返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1
E get(int index) :返回此列表中指定位置处的元素。
2、如何体现栈的?
主要提供了操作栈常用方法:
void push(E e) :将元素推入此列表所表示的堆栈
E peek():获取但不移除此列表的头(第一个元素)。
E peekFirst():获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
E peekLast():获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null
E pop() :从此列表所表示的堆栈处弹出一个元素
3、如何体现队列的?(实现了Queue接口)
| 抛出异常 | 返回特殊值 | |
| 插入 | add(e) |
offer(e) |
| 移除 | remove() |
poll() |
| 检查 | element() |
peek() |
4、如何体现双端队列?(JDK1.6才支持,实现了Deque(double ended queue(双端队列)))
下表总结了12种方法
| 第一个元素(头部) | 最后一个元素(尾部) | |||
| 抛出异常 | 特殊值 | 抛出异常 | 特殊值 | |
| 插入 | addFirst(e) |
offerFirst(e) |
addLast(e) |
offerLast(e) |
| 移除 | removeFirst() |
pollFirst() |
removeLast() |
pollLast() |
| 检查 | getFirst() |
peekFirst() |
getLast() |
peekLast() |
三、常用方法
1、构造方法
LinkedList() :构造一个空列表。
LinkedList(Collection<? extends E> c) :构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。
源码跟踪:

可以看出,无参的构造方法什么都没做。
2、add(Object obj) 方法
源码跟踪:


解读:

3、remove(Object obj) 方法
源码跟踪:


解读:

4、getFirst() 方法
源码跟踪:

Java 之 LinkedList 集合的更多相关文章
- 在C语言中模仿java的LinkedList集合的使用(不要错过哦)
在C语言中,多个数据的储存通常会用到数组.但是C语言的数组有个缺陷,就是固定长度,超过数组的最大长度就会溢出.怎样实现N个数储存起来而不被溢出呢. 学过java的都知道,java.util包里有一个L ...
- Java学习:集合双列Map
数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过 ...
- Java:LinkedList类小记
Java:LinkedList类小记 对 Java 中的 LinkedList类,做一个微不足道的小小小小记 概述 java.util.LinkedList 集合数据存储的结构是循环双向链表结构.方便 ...
- java基础30 List集合下的LinkedList集合
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
- Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...
- Java中的集合Queue、LinkedList、PriorityQueue(四)
Queue接口 Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器.队列的头部保存在队列中时间最长的元素,队列的尾部保存在队列中时间最短的元素.新元素插入(offer)到 ...
- Java学习之集合(LinkedList链表集合)
一.什么是链表集合,通过图形来看,比如33只知道它下一个是55 如果:现在要删除33的话,就是把55赋值给45,这样看它操作集合速度会非常快. 二.LinkedList特有方法 1.添加 addFir ...
- Java—增强for循环与for循环的区别/泛型通配符/LinkedList集合
增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的. 它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作. ...
- Java基础之集合框架——使用真的的链表LinkedList<>(TryPolyLine)
控制台程序. public class Point { // Create a point from its coordinates public Point(double xVal, double ...
随机推荐
- CanvasRenderingContext2D.drawImage()无效,not working
我的技术框架:react,如若不采用堵塞方式,即, const myimg = await loadImage(icon28) ctx.drawImage(myimg,0,0, 100, 100) ...
- Pandas | 13 索引和选择数据
Pandas现在支持三种类型的多轴索引; 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() Pandas提供了各种方法来完成基于 ...
- 请用js语言实现sort排序函数,要求:sort([4,5,2,-1,0])返回[-1,0,2,4,5]
Array.prototype.sort1=function(fn){ var len=this.length; while(len>0){ for(var i=0;i<len;i++){ ...
- selenium--浏览器滚动条操作
前戏 在进行web自动化的时候,selenium只能找当前屏幕上的标签,如果标签在当前页面没显示下,需要拖动滚动条才能查看到这个元素,这时候就要操作浏览器的滚动条,让当前页面显示这个元素才可以操作,在 ...
- NOIP2019翻车前计划以及日记
目前只有日记和草拟计划(Sua机洗点~),等停课后会实施计划,试行期为一天. 根据试行期的学习效果制定计划. update 1:试行期结束,完全可以按计划来. update 2:计划暂时变更,以适应我 ...
- 绘制matplotlib 饼状图
参考:https://blog.csdn.net/ScarlettYellow/article/details/80458797 (2)2016年就业人员在三次产业中分布的饼状图. def swap( ...
- Spring Boot 知识笔记(整合Mybatis)
一.pom.xml中添加相关依赖 <!-- 引入starter--> <dependency> <groupId>org.mybatis.spring.boot&l ...
- Salesforce 开发整理(三)权限共享
Salesforce提供对象的访问权限可以通过 安全性控制 → 共享设置,可以查看每个对象在系统内部默认的访问权限 共用读写:对象的记录任何用户都可以进行读写操作 公用只读:对象的记录任何用户都可以查 ...
- 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)
7种 JVM 垃圾收集器特点.优劣势及使用场景(多图) mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃 ...
- [.Net,C#]三类资源:流对象Stream,字节数组byte[],图片Image
三类资源:流对象Stream,字节数组byte[],图片Image 关系:Stream<=>byte[],byte[]<=>Image Stream 与Image相互转化的媒介 ...