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。