Java隊列

Java隊列

隊列是只能在其上執行操作的對象的集合兩端的隊列。

隊列有兩個末端,稱為頭和尾。

在簡單隊列中,對象被添加到尾部并從頭部刪除并首先刪除首先添加的對象。

Java Collections Framework支持以下類型的隊列。

• 簡單的隊列允許在尾部插入和從頭部移除。

• 優先級隊列為每個元素分配優先級,并允許從隊列中刪除具有最高優先級的元素。

• 延遲隊列向每個元素添加延遲,并僅在其延遲已過去時刪除該元素。

• 雙端隊列允許其元件從頭部和尾部插入和移除。

• 阻塞隊列阻塞線程,當線程已滿時向其添加元素,當線程為空時,它阻止線程從中刪除元素。

• 傳輸隊列是阻塞隊列,其中對象的切換發生在生產者線程和消費者線程之間。

• 阻塞雙端隊列是雙端隊列和阻塞隊列的組合。

隊列的簡介

• 隊列可以定義為有序列表,它允許在一端執行插入操作,稱為REAR,刪除操作在另一端執行,稱為FRONT。

• 隊列被稱為先進先出列表。

• 例如,排隊等候鐵路車票的人隊列。

隊列的應用

由于隊列以先進先出的方式執行操作,這對于操作的排序是相當公平的。 隊列的各種應用如下所述。

• 隊列被廣泛用作單個共享資源(如打印機,磁盤,CPU)的等待列表。

• 隊列用于異步數據傳輸(例如,數據不以兩個進程之間的相同速率傳輸)。 管道,文件IO,套接字。

• 隊列在大多數應用程序中用作緩沖區,如MP3媒體播放器,CD播放器等。

• 隊列用于維護媒體播放器中的播放列表,以便添加和刪除播放列表中的歌曲。

• 隊列在操作系統中用于處理中斷。

時間復雜性

時間復雜性

訪問

搜索

插入

刪除

平均情況

θ(n)

θ(n)

θ(1)

θ(1)

最壞情況

θ(n)

θ(n)

θ(1)

θ(1)

簡單隊列

簡單隊列由 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接口。

例子

以下代碼顯示如何將鏈表用作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.");
    }
  }
}

上面的代碼生成以下結果。

全部教程
天堂资源网,色综合天天综合给合国产,午夜无码伦费影视在线观看,亚洲网红自拍偷拍 俄罗斯雏妓的bbb| 欧美黑寡妇毛片av| 你的好大啊我还想要| 欧美色图片| 强奷美女视频大全| 高h猛烈失禁潮喷a片| 性xxxxx15学生| 偷偷碰偷偷鲁免费视频| 大香伊蕉在人线免费视频| 在线a亚洲视频| av大尺度一区二区三区| 亚洲五月综合自拍区| 丰满饥渴毛茸茸老女人| 免费黄色视频| 美女黄18以下禁止观看叫床| 国语对白国产乱子伦视频大全| 我和岳坶双飞| 男女真人牲交a做片大尺度| 在线看免费无码av天堂| 好紧好湿太硬了我太爽了视频| 人妻熟女少妇中文字幕| 色欲色香天天天综合www| 欧美变态另类牲交zozo| 快穿寻找粗跟h| 玩弄放荡人妇系列短篇| 米奇在线777在线精品视频| 国产群交 视频在线观看| youjljloljzz在线播放| 亲胸揉胸膜下刺激视频| 加勒比久久综合久久| 宝贝儿再塞最后一颗| http://www.emmacurtisdesigns.com