Java中的队列Queue接口

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Queue接口在java.util包中可用,并扩展了Collection接口。队列集合用于保存要处理的元素,并提供各种操作,如插入,删除等。它是一个有序的对象列表,其使用仅限于在列表末尾插入元素并从头开始删除元素列表,即它遵循FIFO或先入先出原则。作为一个接口,队列需要一个具体的声明类,最常见的类是Java 中的PriorityQueue和LinkedList。需要注意的是,这两个实现都不是线程安全的。如果需要线程安全实现,PriorityBlockingQueue是一个替代实现。Queue的几个重要特征是:

  • Queue用于在队列末尾插入元素并从队列的开头删除。它遵循FIFO概念。
  • Java Queue支持Collection接口的所有方法,包括插入,删除等。
  • LinkedList,ArrayBlockingQueue和PriorityQueue是最常用的实现。
  • 如果对BlockingQueues执行任何null操作,则抛出NullPointerException。
  • BlockingQueues具有线程安全的实现。
  • java.util包中可用的队列是Unbounded Queues
  • java.util.concurrent包中可用的队列是有界队列。
  • 除Deques之外的所有队列分别支持在队列的尾部和头部插入和移除。Deques支撑元件在两端插入和移除。

队列中的方法:

  1. add() -此方法用于在队列尾部添加元素。更具体地说,如果使用了链接列表的最后一个,或者在优先级队列实现的情况下根据优先级。
  2. peek() -此方法用于查看队列的头部而不删除它。如果队列为空,则返回Null。
  3. element() -此方法类似于peek()。当队列为空时,它会抛出NoSuchElementException
  4. remove() -此方法删除并返回队列的头部。当队列不严重时,它会抛出NoSuchElementException
  5. poll() -此方法删除并返回队列的头部。如果队列为空,则返回null。

由于它是Collections类的子类型,它继承了它的所有方法,即size(),isEmpty(),contains()等。

下面是一个简单的Java程序来演示这些方法

// Java orogram to demonstrate working of Queue
// interface in Java
import java.util.LinkedList;
import java.util.Queue;

public class QueueExample
{
  public static void main(String[] args)
  {
    Queue<Integer> q = new LinkedList<>();

    // Adds elements {0, 1, 2, 3, 4} to queue
    for (int i=0; i<5; i++)
     q.add(i);

    // Display contents of the queue.
    System.out.println("Elements of queue-"+q);

    // To remove the head of queue.
    int removedele = q.remove();
    System.out.println("removed element-" + removedele);

    System.out.println(q);

    // To view the head of queue
    int head = q.peek();
    System.out.println("head of queue-" + head);

    // Rest all methods of collection interface,
    // Like size and contains can be used with this
    // implementation.
    int size = q.size();
    System.out.println("Size of queue-" + size);
  }
}
输出:

Elements of queue-[0, 1, 2, 3, 4]
removed element-0
[1, 2, 3, 4]
head of queue-1
Size of queue-4
  •   本文标题:Java中的队列Queue接口 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/5348.html
    扫描二维码添加微信 
  • ,领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘优惠券!添加微信后,分享淘宝选中的机械键盘给淘宝机器人即可领取!
    支持我们,就用微信淘宝!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读