Java中的Deque offerFirst()方法
Deque接口 的 offerFirst(E e) 方法可以在不违反容量限制的情况下立即将指定的元素插入到Deque的前面。此方法优于addFirst()方法,因为当容器的容量已满时,此方法不会抛出异常,而是返回false。
语法:
boolean offerFirst(E e)
参数: 此方法接受一个必需的参数 e ,表示要插入到Deque前面的元素。
返回值: 如果插入成功,则返回true,否则返回false。
异常: 该函数会抛出以下四种异常:
- ClassCastException :将要插入的元素的类不能被添加到此容器中。
- IllegalArgumentException :元素的某些属性阻止其被添加到Deque中。
- NullPointerException :要插入的元素为 null,而Deque的接口不允许 null 元素。
下面的程序说明了Deque的offerFirst()方法:
程序 1:
//Java程序演示当Null被传递时,Deque的offerFirst()方法
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// create object of Deque
Deque<Integer> DQ
= new LinkedBlockingDeque<Integer>(3);
if (DQ.offerFirst(10))
System.out.println("Deque 未满,已插入 10");
else
System.out.println("Deque 已满");
if (DQ.offerFirst(15))
System.out.println("Deque 未满,已插入 15");
else
System.out.println("Deque 已满");
if (DQ.offerFirst(25))
System.out.println("Deque 未满,已插入 25");
else
System.out.println("Deque 已满");
if (DQ.offerFirst(20))
System.out.println("Deque 未满,已插入 20");
else
System.out.println("Deque 已满");
// 在移除之前打印 Deque
System.out.println("Deque: " + DQ);
}
}
输出结果:
Deque 未满,已插入 10
Deque 未满,已插入 15
Deque 未满,已插入 25
Deque 已满
Deque: [25, 15, 10]
程序 2:
//Java程序演示当Null被传递时,Deque的offerFirst()方法
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
public class GFG {
public static void main(String[] args)
throws NullPointerException
{
// create object of Deque
Deque<Integer> DQ
= new LinkedBlockingDeque<Integer>();
// 在Deque的末尾添加数字
DQ.offerFirst(7855642);
DQ.offerFirst(35658786);
DQ.offerFirst(5278367);
// 插入 null 值
DQ.offerFirst(null);
// 在移除之前打印 Deque
System.out.println("Deque: " + DQ);
}
}
输出结果:
线程"main"中的异常java.lang.NullPointerException
在java.util.concurrent.LinkedBlockingDeque.offerFirst(LinkedBlockingDeque.java:342)中
在GFG.java中,第21行。
说明: 另外两个异常是内部异常,取决于编译器的原因,因此无法在代码中显示。
参考资料: https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html#offerFirst-E-