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+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告