Queue用于模拟队列这种数据结构,队列一般是指“先进先出”FIFO的容器,队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。Queue接口中定义了以下几个方法void add(Object e)将指定的元素加入到此队列的尾部;Object element()获取队列头部的元素,可是不删除该元素。boolean offer(Object e):将指定的元素加入到此队列的尾部。Object peek()获取队列的头部元素,但不删除该元素,若是队列为空返回null。Object poll()获取队列的头部元素,并删除该元素。若是队列为空返回null。Object remove():获取队列头部的元素,并删除该元素。Queue接口有一个priorityQueue实现类,除此以外Queue还有一个Deque的接口,Deque表明一个“双端队列”,双端队列能够同时从两端来添加、删除元素,所以Deque的实现类便可当成队列使用也能够当成栈使用。数组
1.PriorityQueue是一个比较标准的队列实现类,PriorityQueue保存队列元素的顺序并非按加入的队列的顺序,而是按照队列元素大小进行从新排列。所以当代调用peek()方法或者poll()方法取出队列的元素时,并非取出最早进入队列的元素,而是取出队列中最小的元素。PriorityQueue不容许插入null元素,PriorityQueue的元素有两种排序方式,一种天然排序(必须实现Comparable接口)另一种定制排序(要传入一个Comparator对象)安全
2.Deque接口是Queue接口的子接口,它表明这一个双端的队列,容许经过这些方法从两端来操做元素,void addFrist(Object e)将指定元素插入该双端队列的开头;void addLast(Object e)将指定的元素插入到双端队列的末尾;Iterator descendingIterator():返回该队列对应的迭代器,该迭代器将逆向顺序来迭代队列的元素。Object getFrist()获取但不能删除双端队列的的一个元素,Object getLast()获取但不删除双端元素的末尾队列。Object peekFrist()获取但不删除双端元素的第一个也元素。Object poolFrist()获取并删除双端队列的第一个元素。boolean offerFrist(Object e)将指定的元素插入到双端队列的开头。Object pop():将一个元素push进该双端队列所表示的栈定顶。void push(Object e)将一个元素push进该双端队列所表示的栈的栈顶。Object removeFrist()获取并删除该双端队列的第一个元素。Object removeFristOccurrence(Object o)删除该双端队列的第一次出现的元素o。Deque接口提供了一个典型的实现类:ArrayDeque,它是基于数组实现的双端队列,建立Deque时一样可指定一个numElement参数指定数组的长度,Deque底层的数组的长度为16,它底层也是一个动态的可重分配的Object[] 数组来存储集合元素。ArrayDeque便可用作栈也可用做队列来使用。数据结构
3.LinkedList类是List接口的实现类,这意味这能够根据索引来随机访问数组元素,而它又实现了Deque接口,因此他也能够当作双端队列来使用,所以既能够当成栈也能够当成队列来使用。LinkedList做为List集合、双端队列、栈用法,是一个功能很是强大的集合类。但LinkedList与ArrayList、ArrayDeque的实现机制彻底不一样,ArrayList、ArrayDeque内部以数组的形式保存集合,随机访问元素性能较好,而LinkedList内部以链表的形式保存数据,随机访问性能较差,但插入、删除元素性能较好,Vertor也是数组子形式存储可是他线程安全因此性能都很差。性能