java.util.Queue简介

3 篇文章 0 订阅
2 篇文章 0 订阅

Queue是一种先进先出(first-in-first-out) 的数据结构,除了基本的操作外,队列还提供了额外的插入、提取和检查操作。这些方法都提供了两份的形式,一种是抛出一个异常,一种是返回一个特殊值来判断该操作是否成功。其中后一种操作是为了限制队列容量的判断而实现的。java.util.Queue在java中是一个接口,该接口扩展了java.util.Collection接口。

Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用

element()或者peek()方法。

Queue是非线程安全的。

● 时间复杂度:

● 索引: O(n)

● 搜索: O(n)

● 插入: O(1)

● 移除: O(1)

Queue的继承图:

 

Queue包含的方法有:

1、booleab add(E e):插入指定的元素要队列中,并返回true或者false,如果队列数量超过了容量,则抛出IllegalStateException的异常。

2、boolean offer(E e):插入指定的元素到队列,并返回true或者false,如果队列数量超过了容量,不会抛出异常,只会返回false。

3、E remove():搜索并删除最顶层的队列元素,如果队列为空,则抛出一个Exception

4、E poll():搜索并删除最顶层的队列元素,如果队列为空,则返回null

5、E element():检索但不删除并返回队列中最顶层的元素,如果该队列为空,则抛出一个Exception

6、E peek(): 检索但不删除并返回最顶层的元素,如果该队列为空,则返回null

 

LinkedList实现了Deque接口,Deque接口继承了Queue接口,所以LinkedList也可以当做Queue来操作

public class QueueTest {

public static void main(String[] args){
LinkedList linkedList = new LinkedList();
System.out.println("poll搜索并删除最顶层的队列元素,如果队列为空,则返回null:"+linkedList.poll());
// System.out.println("搜索并删除最顶层的队列元素,如果队列为空,则抛出一个Exception:"+linkedList.remove());
linkedList.add("100");
linkedList.add("200");
System.out.println("LinkedList数量"+linkedList.size());
linkedList.poll();
System.out.println("LinkedList数量"+linkedList.size());
System.out.println("检索但不删除并返回最顶层的元素,如果该队列为空,则返回nul:"+linkedList.peek());
}
}

 

输出的结果:

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值