美文网首页
java 队列接口的设计

java 队列接口的设计

作者: 萍水相逢_程序员 | 来源:发表于2018-09-01 16:15 被阅读0次

队列

队列一种特殊的线性表, 插入和删除操作分别在表的两端进行,特点是先进先出。把插入元素叫入队,这端叫对尾,删除元素叫出队,称为队尾。

java 队列接口的设计

Queue

public interface Queue<E> extends Collection<E>{
   
   // 添加一个元素 , 队列已满抛出异常 
   boolean add(E e);
   // 添加一个元素 , 队列已满抛返回false 
   boolean offer(E e);
   //移除并返回队列头部的元素,如果队列为空 则抛出异常
   E remove();
   //移除并返回队列头部的元素,如果队列为空返回null
   E poll();
   //返回队列头部的元素,如果队列为空 则抛出异常
   E element();
   //返回队列头部的元素,如果队列为空返回null
   E peek();
   
}

Deque

双向队列, 支持从两端点的检索 插入 删除元素
可以支持 先进先出, 先进后出的形式

    public interface Deque<E> extends Queue<E> {
        
        // 队列头添加一个元素 , 队列已满抛出异常 
        void addFirst(E e);
        
        // 队列尾添加一个元素 , 队列已满抛出异常 
        void addLast(E e);
        
        // 队列满  返回特殊值 
        boolean offerFirst(E e);
        
        // 队列满  返回特殊值 
        boolean offerLast(E e);
        
        //移除并返回队列头部的元素,如果队列为空 则抛出异常
         E removeFirst();
         
         //移除并返回队列尾部的元素,如果队列为空 则抛出异常
         E removeLast();
         
         //移除并返回队列头部的元素,如果队列为空返回null
         E pollFirst();
         
         //移除并返回队列头部的元素,如果队列为空返回null
         E pollLast();
         
         // Retrieves, but does not remove, the first element of this deque.  throws an exception if this deque is empty
         E getFirst();
         
         //Retrieves, but does not remove, the last element of this deque.  throws an exception if this deque is empty
         E getLast();
         
         // Retrieves, but does not remove, the first element of this deque. return {@code null} if this deque is empty
          E peekFirst();
          
          // Retrieves, but does not remove, the last element of this deque,    returns {@code null} if this deque is empty
          E peekLast();
           
           
    }

BlockingQueue

堵塞队列的设计
增加4个附加操作
1. 队列为空 增加获取元素线程被堵塞直到队列变为非空
2. 队列为满时 , 添加元素线程被堵塞直到队列不满
3. 在上述2种情况下,设计有限时间的堵塞。超时后返回失败

    public interface BlockingQueue<E> extends Queue<E> {
        
        boolean add(E e);
        boolean offer(E e);
        // 添加一个元素 , 队列已满则一直堵塞, 直到队列不满或者被中断
        void put(E e) throws InterruptedException;
        //添加一个元素,队列已满则进入等待 
        boolean offer(E e, long timeout, TimeUnit unit)throws InterruptedException;
        //返回队列头部的元素,如果队列为空,则堵塞
        E take() throws InterruptedException;
        // 返回队列头部的元素,如果队列为空,则等待
        E poll(long timeout, TimeUnit unit)throws InterruptedException;
        //一次性取走 BlockingQueue中的数据 到C中 
        int drainTo(Collection<? super E> c);
        //一次性取走 指定的BlockingQueue中的数据 到C中
        int drainTo(Collection<? super E> c, int maxElements);  
    }

相关文章

  • java 队列接口的设计

    队列 队列一种特殊的线性表, 插入和删除操作分别在表的两端进行,特点是先进先出。把插入元素叫入队,这端叫对尾,删除...

  • 集合基础

    1.集合的接口与实现分离  Java集合类库将接口与实现分离。  例如:队列,队列接口指定可以在队列的尾部添加元素...

  • 优先级队列(Priority Queue)

    1、接口设计 优先级队列也是一个队列,所以接口设计如下: 普通的队列是FIFO元素,先进先出,而优先级队列是按照优...

  • Java 集合 总体框架

    概述 在Java中有一套设计优良的接口和类组成了Java集合框架,其实这些类就是对集合、链表、队列、栈、数组、映射...

  • 数据结构-队列(Queue)-FIFO

    数据结构-队列(Queue)-FIFO 队列的接口设计 双端队列-Deque 循环队列-CircleQueue 双...

  • 阻塞队列

    阻塞队列BlockingQueue不支持插入null元素,好好了解一下阻塞队列接口设计。 了解阻塞队列的接口方法后...

  • 并发编程05--Java中的锁(Lock接口和队列同步器)

    Java中的锁Lock接口队列同步器队列同步器的接口与示例队列同步器的实现分析同步队列独占式同步状态获取与释放共享...

  • 数据结构之Java Queue

    本文从通过Java Array 实现一个简单的队列和循环队列,最后对Java Queue 接口及其子类的特点进行一...

  • 从趣例理解 Android 消息机制,帮你彻底解决进程间的通信问

    这次,真的可以一文吃透: Java层消息队列的设计 Java层Looper分发 Native层消息队列和Java层...

  • 手敲数据结构——基于最大堆实现优先队列

    这里实现的优先队列是基于最大堆实现的,java系统是基于最小堆实现的。 队列接口 优先队列实现 LeetCode上...

网友评论

      本文标题:java 队列接口的设计

      本文链接:https://www.haomeiwen.com/subject/wqjuwftx.html