Java Queue中add()和offer()方法的区别是什么

Java Queue中add()和offer()方法的区别是什么

Java中的Queue是一种具有各种功能的线性数据结构。队列有两个端点,并且它遵循先入先出(FIFO)原则来插入和删除其元素。在本教程中,我们将查看Java队列中的两个重要函数,它们分别是add()和offer()。

什么是队列

Java中的队列是一个接口,它扩展了util和collection包。元素从队列的后端插入,并从前端移除。在Java中,可以使用链表、DeQueue和优先队列的类来实现队列。优先队列是正常队列的扩展形式,其中每个元素都具有优先级。

Queue的add()方法

该方法用于将元素插入队列中。它将定义的元素(作为参数传递的元素)添加到队列的末尾,并且仅当定义的元素成功添加到末尾时,它才返回true。如果一个元素没有被添加到队列的末尾,add()方法会抛出一个异常。

使用此方法,我们可以向队列中添加整数和字符串值。

例如:add(3)将在队列的末尾插入3。

add()方法始终需要一些参数值。您不能将null值传递给它,因为队列不接受null值,这种情况下它将抛出一个异常。

add()方法的异常类型

  • IllegalStateException - 当队列达到其最大容量时引发此Java异常。

  • NullPointerException - 当尝试通过add()方法输入null值时,队列不接受null值。

示例

以下程序展示了如何在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 它属于集合框架。 它是一个队列方法。

结论

队列中add()和offer()方法的唯一区别是:add()在超过队列限制时抛出异常。而offer()方法不会抛出任何异常,在成功插入元素时返回true,并在由于队列达到最高容量而无法插入元素时返回false。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程