zoukankan      html  css  js  c++  java
  • 队列

      队列的特点是先进先出

      单项队列只能在队尾添加元素,从队头删除元素。

      双向队列的队头和队尾都支持元素的入队和出队。

    public interface Deque<E> extends Queue<E>{
      void addFirst(E e);
      void addLast(E e);
    
      E removeFirst();
      E removeLast();
    }

      一般情况下,Queue的实现类不允许添加null元素。因为poll(),peek()方法在异常时会返回null

    public interface Queue<E> extends Collection<E>{
      boolean add(E e);  //Exception
      boolean offer(E e); // return special value
      E remove();//Exception
      E poll();// return special value
      E element();//Exception
      E peek();// return special value
    }

    PriorityQueue  

      PriorityQueue又叫做优先级队列,保存队列元素的顺序不是按照加入队列的顺序,而是按照队列元素的大小进行排序的。不允许null元素。PriorityQueue使用了堆数据结构。底层使用数组保存数据。PriorityQueue元素可以使用默认的自然排序或提供Comparator在队列实例化时指定的排序方式进行排序。当PriorityQueue中没有指定Comparator时,加入的元素必须事先了Comparable接口,否则会导致ClassCastException。

       PriorityQueue调用默认的构造方法时,使用默认的初识容量(DEFAULT_IITIAL_CAPACITY = 11)创建一个PriorityQueue,并根据其自然顺序来排序元素

      PriorityQueue不是线程安全的。PriorityBlockingQueue是线程安全的

      不允许插入null元素

      PriorityQueue实现插入方法(offer,poll,remove()和add方法)的时间复杂度是O(log(n)),实现remove(Object)和contains(Object)方法的时间复杂度是O(n),实现检索方法(peek,element和size)的时间复杂度是O(1),在不需要删除元素时,应使用peek的方式遍历每个元素。

      iterator()职工提供的迭代器并不保证以有序的方式遍历PriorityQueue中的元素

    ArrayDeque

      ArrayDeque使用数组实现的Deque,底层是数组,默认长度是16。思路是引入两个游标,head和tail,若向队列里插入一个元素,就把tail向后移动。若从队列中删除一个元素,就把head向后移动。若tail已经指向了数组的最后一位,则把head重新指向数组的头就可以了。即用一个环形数组来实现队列。ArrayDeque也是县城不安全的。

      ArrayBlockingQueue在构造时需要指定容量,并可以选择是否需要公平性,若公平参数被设置为true,等待时间最长的线程会优先得到处理。

      DelayQueue是一个存放Delayed元素的无阻塞队列,只有延迟期满时才能从国内中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。若延迟起都没有满,则队列没有头部,并且poll方法返回null。当一个元素的getDelay()方法返回一个小于或等于零的值,则出现期满,poll就可以一出这个元素了。此队列不允许使用null元素。放入DelayQueue的元素还要实现compareTo方法,DelayQueue使用这个来为元素排序。

      

  • 相关阅读:
    浏览器网络相关概念
    量化投资:以python为工具
    Quantitative Strategies for Achieving Alpha (三)
    Quantitative Startegies for Achieving Alpha(二)
    Quantitative Strategies for Achieving Alpha(一)
    打开量化投资的黑箱(二)
    打开量化投资的黑箱(一)
    量化投资学习(一)
    handy源码阅读(六):tcp类
    handy源码阅读(六):udp类
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/9243592.html
Copyright © 2011-2022 走看看