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。