Java中Queue的add()和offer()方法的區別?


Java中的佇列是一種線性資料結構,具有多種功能。佇列有兩個端點,它遵循先進先出 (FIFO) 原則來插入和刪除其元素。在本教程中,我們將瞭解Java佇列的兩個重要功能:add() 和 offer()。

什麼是佇列?

Java中的佇列是一個擴充套件了util和collection包的介面。元素從後端插入,從前端移除。Java中的佇列可以使用連結串列、Deque和優先佇列類來實現。優先佇列是普通佇列的擴充套件形式,每個元素都有一個優先順序。

佇列的add()方法

此方法用於將元素插入佇列。它在佇列的末尾新增定義的元素(作為引數傳遞的元素),只有當定義的元素成功新增到末尾時才返回true。如果元素沒有新增到佇列的末尾,add()方法將丟擲異常。

使用此方法,我們可以向佇列新增整數和字串值。

例如:add(3) 將在佇列末尾插入 3。

add()方法總是接受一些引數值。您不能向其傳遞空值,因為佇列不接受空值,在這種情況下,它將丟擲異常。

add()方法中的異常型別

  • IllegalStateException − 當佇列達到其最大容量時,將引發此Java異常。

  • NullPointerException − 當嘗試透過add()方法輸入空值時,因為佇列不接受空值。

示例

以下程式演示如何在Java中實現佇列的add()方法。

import java.util.*; // importing util package with all its features

public class Main {
   public static void main(String[] args) {
      Queue<Integer> q = new LinkedList<>(); // queue declaration
      q.add(5); //adding elements to the queue
      q.add(6);
      q.add(4);
      q.add(1);
      q.add(8);
      
      System.out.println("Queue is: " + q);
   }
}

輸出

Queue is: [5, 6, 4, 1, 8]

佇列中的offer()方法

此方法用於將元素插入佇列,元素可以是整數或字串資料型別。它根據佇列的容量插入指定的元素。如果無法將特定元素插入佇列,它不會丟擲任何異常。

在Java佇列的後端成功插入元素後,它返回True。如果佇列已滿,offer()方法將返回false。

例如

offer(3) : this will insert 3 into the queue
offer(“Java”) : this will insert Java into the queue

示例

以下程式演示如何在Java中實現offer()。

import java.util.*; // importing util package with all its features

public class Main {
   public static void main(String[] args) {
      Queue<String> q = new LinkedList<>(); // queue declaration
      q.offer("Java"); //inserting elements to the queue
      q.offer("is");
      q.offer("Good");
		
      System.out.println("Queue is " + q);
   
	}
}

輸出

Queue is [Java, is, Good]

add()和offer()方法的區別

序號

add()函式

offer()方法

1

當嘗試向已滿佇列插入元素時,add()函式會丟擲IllegalState異常。

它不會丟擲任何異常,但在佇列已滿或達到最大大小時返回false。

2

成功插入佇列元素後,add()方法返回true。它不返回False

成功插入元素後,offer()方法返回True,插入佇列元素失敗時返回False。

3

它屬於Collection框架。

它是一個佇列方法。

結論

佇列中add()和offer()方法的唯一區別在於:如果add()超過了佇列的限制,它會丟擲異常。而offer()方法不會丟擲任何異常,它在成功插入元素時返回true,當由於佇列達到其最大容量而無法將元素插入佇列時返回False。

更新於:2023年2月22日

3K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告