type
status
date
slug
summary
tags
category
icon
在java中,
LinkedList
可以用来作为栈、队列和双端队列使用,这里简单地来学习一下LinkedList的各种方法。
但是好像就是面试的时候会问问,看很多大厂工作人员的说法好像不怎么用到1.LinkedList节点的数据结构
LinkedList
是双向列表,每一个节点都有一个数据和两个指针分别指向前一个和后一个节点。以下是LinkedList基础数据结构的源码:画一个图来辅助理解一下:)

2.LinkedList 作栈来使用
2.1 push()方法
push(E)
作为入栈的方法,是在一个栈的头部添加元素2.2 pop()方法
pop()
是出栈方法,是取出头部的元素
2.3 peek()方法
peek()
方法是查看头部元素的方法,也就是查看栈顶元素的方法3. LinkedList作队列来使用
3.1 add(E)和offer(E)
offer(E)
方法内部调用了add(E)
,两个方法效果是完全相同的,源码如下:3.2 peek(E)和element(E)
共同点:
peek(E)
和element(E)
都可以返回队列的头部元素;区别: 如果头部元素为
null
, peek(E)
会返回null
,element(E)
会抛出一个 NoSuchElementException
异常;源码如下:
3.3 poll(E)和remove(E)方法
共同点: 都可以返回头部元素,并从队列中删除该元素
区别:当头部元素为
null
时,remove()
方法会抛 NoSuchElementException
异常,poll()
方法返回 null
源码如下:
4.LinkedList 作为 双端队列使用
双端队列对应栈和队列的常用方法为:
poll() --> pollFirst()和pollLast()
offer() --> offerFirst()和offerLast()
peek() --> peekFirst()和peekLast()