首页 > 代码库 > 【数据结构】之队列(Java语言描述)

【数据结构】之队列(Java语言描述)

  在【这篇文章】中,我简单介绍了队列的基本数据结构及操作方式,并用C语言代码描述了队列的基本功能实现。

  JDK中默认为我们提供了队列的API—— Queue 。

  Queue是一个接口,其中提供了处理队列及其操作的一些基本方法,如果我们想要创建自己的队列,就需要先创建一个类实现Queue接口。

  在Java语言中也为我们提供了一些现成的Queue接口的实现类,如下:

 * @see java.util.Collection
 * @see LinkedList
 * @see PriorityQueue
 * @see java.util.concurrent.LinkedBlockingQueue
 * @see java.util.concurrent.BlockingQueue
 * @see java.util.concurrent.ArrayBlockingQueue
 * @see java.util.concurrent.LinkedBlockingQueue
 * @see java.util.concurrent.PriorityBlockingQueue

  从上面的源码注释中可以发现,Queue的实现类中有一个是我们平时编码经常用到的类: LinkedList 。也就是说,我们可以通过下面的代码,简单地创建一个队列:

Queue<Integer> q = new LinkedList<Integer>();

  对于一个队列来说,最重要的方法有两个,分别是:入队列和出队列。Queue接口也为我们定义了这两个方法:入队列 offer() 和出队列 poll() ,当然,LinkedList等实现类中也实现了这两个方法。在LinkedList中,offer()方法即创建一个新节点并添加到队列的最后;poll()方法即将队列的头设置为当前队列头的下一个节点。具体源码如下:

public boolean offer(E e) {
    return add(e);
}

public E poll() {
    final Node<E> f = first;
    return (f == null) ? null : unlinkFirst(f);
}

 

【数据结构】之队列(Java语言描述)