举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java队列的使用 Java 队列

java队列的使用 Java 队列

2023-03-20 04:18 Java教程

java队列的使用 Java 队列

java队列的使用

Java队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。因此,队列又称为“先进先出”(FIFO—first in first out)线性表。Java中的Queue接口是一个有序集合,它以特定的方式存储和访问元素。

Java中的Queue接口有多种实现方式。LinkedList、ArrayDeque和PriorityQueue都是常用的实现方式。LinkedList是一个双向链表实现的队列;ArrayDeque是一个动态数组实现的队列;PriorityQueue是一个基于优先堆实现的队列。

// 声明一个LinkedList对象来作为队列 
LinkedList<String> queue = new LinkedList<String>(); 
// 添加元素 
queue.add("element1"); 
queue.add("element2"); 
queue.add("element3"); 
// 访问并删除头部元素 
String element = queue.poll(); // element1 
System.out.println(element); // element1 
System.out.println(queue); // [element2, element3]   

Java 队列

Java集合教程 - Java队列


队列是只能在其上执行操作的对象的集合两端的队列。

队列有两个末端,称为头和尾。

在简单队列中,对象被添加到尾部并从头部删除并首先删除首先添加的对象。

Java Collections Framework支持以下类型的队列。

  • 简单的队列允许在尾部插入和从头部移除。
  • 优先级队列为每个元素分配优先级,并允许从队列中删除具有最高优先级的元素。
  • 延迟队列向每个元素添加延迟,并仅在其延迟已过去时删除该元素。
  • 双端队列允许其元件从头部和尾部插入和移除。
  • 阻塞队列阻塞线程,当线程已满时向其添加元素,当线程为空时,它阻止线程从中删除元素。
  • 传输队列是阻塞队列,其中对象的切换发生在生产者线程和消费者线程之间。
  • 阻塞双端队列是双端队列和阻塞队列的组合。

简单队列

简单队列由 Queue 接口的实例表示。

队列允许您执行三个基本操作:

  • 从尾部添加元素
  • 从其头部移除元素
  • 在元素顶部审查

Queue接口为三个操作中的每一个定义了两个方法。如果操作不可能,一个方法抛出异常,另一个方法方法返回false或null以指示失败。

方法描述
boolean add(E e)如果可能,向队列中添加一个元素。否则,它抛出异常。
boolean offer(E e)如果不能添加元素,则将元素添加到队列中,而不抛出异常。 它在失败时返回false,在成功时返回true。
E remove()删除队列的头。如果队列为空,它会抛出异常。此方法返回已移除的项目。
E poll()从队列中删除元素。如果队列为空而不是抛出异常,则返回null。
Eelement()偷看队列的头,而不从队列中删除它。 如果队列为空,它会抛出异常。
E peek()查看队列,如果队列为空而不是抛出异常,则返回null。

LinkedList和PriorityQueue是Queue接口的两个实现类。LinkedList还实现了List接口。

Queue APIs

LinkedList APIs

Stack APIs



例子

以下代码显示如何将链表用作FIFO队列。

import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;

public class Main {
  public static void main(String[] args) {
    Queue<String> queue = new LinkedList<>();
    queue.add("Java");
    // offer() will work the same as add()
    queue.offer("SQL");
    queue.offer("CSS");
    queue.offer("XML");

    System.out.println("Queue: " + queue);

    // Let"s remove elements until the queue is empty
    while (queue.peek() != null) {
      System.out.println("Head  Element: " + queue.peek());
      queue.remove();
      System.out.println("Removed one  element from  Queue");
      System.out.println("Queue: " + queue);
    }
    System.out.println("queue.isEmpty(): " + queue.isEmpty());
    System.out.println("queue.peek(): " + queue.peek());
    System.out.println("queue.poll(): " + queue.poll());
    try {
      String str = queue.element();
      System.out.println("queue.element(): " + str);
      str = queue.remove();
      System.out.println("queue.remove(): " + str);
    } catch (NoSuchElementException e) {
      System.out.println("queue.remove(): Queue is  empty.");
    }
  }
}

上面的代码生成以下结果。

阅读全文
以上是编程学为你收集整理的java队列的使用 Java 队列全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部