java.util.Queue简介

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());
}
}

输出的结果:








猜你喜欢

转载自blog.csdn.net/c910511/article/details/80160904