Java中的队列
1、队列的定义
队列:顾名思义,就像一个排队的列一样,排队要遵循的规则就是先来后到,所以队列就是一个先入先出(FIFO)的数据结构。这是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是Java的某些队列可以在任何地方插入删除,比如常用的 LinkedList 集合。
2、队列接口的继承图
队列主要分为阻塞和非阻塞,有界和无界、单向链表和双向链表之分;

3、Queue
Queue<Integer> queue = new LinkedList<>(); // LinkedList实现了Queue接口
| 方法 | 描述 |
|---|---|
| int size() | 获取队列长度 |
| boolean add(E)/boolean offer(E) | 添加元素到队尾 |
| E remove()/E poll() | 获取队首元素并从队列中删除 |
| E element()/E peek() | 获取队首元素但并不从队列中删除 |
remove() 和 poll() 的区别:如果队列为空,remove会报异常NoSuchElementException,poll返回null。
element() 和 peek() 的区别:如果队列为空,element会报异常NoSuchElementException,peek返回null。
4、Deque
// Deque 实现
// 可以从两端进行插入、取出、删除数据
Deque<Integer> queue = new ArrayDeque<>();
/ Deque 接口继承了 Queue 接口
// 所以 Queue 中的 add、poll、peek等效于 Deque 中的 addLast、pollFirst、peekFirst
Deque是Queue的子类,可以把它当作队列来使用。Deque可以在两边都操作元素:新增、删除、访问元素等,而Queue 只能在队首 对元素进行操作。

Java中的队列是一种基于FIFO(先入先出)原则的数据结构,如LinkedList和ArrayDeque实现了Queue和Deque接口。Queue主要提供size、add/offer、remove/poll、element/peek等方法,而Deque则允许在两端进行插入、删除和访问元素,扩展了Queue的功能。

170万+

被折叠的 条评论
为什么被折叠?



