• 【数据结构】之队列(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);
    }
  • 相关阅读:
    OutOfMemoryError异常
    synchronized四种锁状态的升级
    题解LeetCode--三数之和
    JDK 8的HashMap源码解析
    LinkedList原理分析
    队列与LinkedList原理实现
    Java中的递归以及不死神兔实例(斐波那契数列)
    递归问题1
    排序的第二天_快速排序与归并排序
    yum源遇到的问题
  • 原文地址:https://www.cnblogs.com/itgungnir/p/7300637.html
Copyright © 2020-2023  润新知