1.Queue 接口的常用功能
除了基本的
Collection
操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在
两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(
null
或
false
,具体取
决于操作)。插入操作的后一种形式是用于专门为有容量限制的
Queue
实现设计的;在大多数
实现中,插入操作不会失败
队列通常(但并非一定)以
FIFO
(
First In First Out
先进先出)的方式排序各个元素。不过优先
级队列和
LIFO
队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO
(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的
头
都是调用
remove()
或
poll()
所移除的元素。在
FIFO
队列中,所有的新元素都插入队列的
末
尾
其他种类的队列可能使用不同的元素放置规则。每个
Queue
实现必须指定其顺序属性。
Queue
实现通常不允许插入
null
元素,尽管某些实现(如
LinkedList
并不禁止插入
null
)
Queue
接口并未定义阻塞队列的方法
2.Dueue双端队列
一个线性
collection
,支持在两端插入和移除元素。名称
deque
是
“double ended queue
(双端
队列)
”
的缩写,通常读为
“deck”
。大多数
Deque
实现对于它们能够包含的元素数没有固定限
制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列
此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存
在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(
null
或
false
,具体取决于操作)。插入操作的后一种形式是专为使用有容量限制的
Deque
实现设 计的;在大多数实现中,插入操作不能失败
此接口扩展了
Queue
接口。在将双端队列用作队列时,将得到
FIFO
(先进先出)行为。将元
素添加到双端队列的末尾,从双端队列的开头移除元素。从
Queue
接口继承的方法完全等效于
Deque
方法,如下表所示:
双端队列也可用作
LIFO
(后进先出)堆栈。应优先使用此接口而不是遗留
Stack
类。在将双
端队列用作堆栈时,元素被推入双端队列的开头并从双端队列开头弹出。堆栈方法完全等效于
Deque
方法,如下表所示:
与
List
接口不同,此接口不支持通过索引访问元素。
虽然
Deque
实现没有严格要求禁止插入
null
元素,但建议最好这样做。建议任何事实上允许
null
元素的
Deque
实现用户最好
不
要利用插入
null
的功能。这是因为各种方法会将
null
用
作特殊的返回值来指示双端队列为空
3.Queue实现子类
LinkedList
package com.openlab;
import java.util.LinkedList;
/**
* LinkedList使用示例
*/
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
// 添加
LinkedList<Integer> data = addMethod(list);
System.out.println(data); // [5, 3, 2, 1, 4]
// 检查
chekMethod(data);
// 删除
//removeMethod(data);
}
LinkedList集合特点
1.可以添加重复元素
2.元素是有顺序的,这个顺序是添加顺序
3.查询效率低,但是添加和删除效率高(与 ArrayList 相比)