在 Java 中使用示例中的 BlockingDeque offerFirst() 方法
BlockingDeque 的 offerFirst(E e) 方法将参数中传递的元素插入到 Deque 容器的最前面。如果容器的容量已超过,则不像 add() 和 addFirst() 函数那样返回异常。
语法:
public boolean offerFirst(E e)
参数: 此方法接受一个必填参数 e, 它是要插入到 BlockingDeque 前面的元素。
返回: 如果插入了元素,则此方法返回 true, 否则返回 false。
注意: BlockingDeque 的 offerFirst() 方法是继承自 Java 中的 LinkedBlockingDeque 类。
下面的程序说明 LinkedBlockingDeque 的 offerFirst() 方法:
程序1:
// Java 程序演示 BlockingDeque 的 offerFirst() 方法
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// 创建 BlockingDeque 对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>(4);
// 在 BlockingDeque 的末尾添加数字
BD.offerFirst(7855642);
BD.offerFirst(35658786);
BD.offerFirst(5278367);
BD.offerFirst(74381793);
// 无法插入
BD.offerFirst(10);
// 无法插入因此返回 false
if (!BD.offerFirst(10))
System.out.println("由于容量已满,无法插入元素 10");
// 在移除之前打印队列
System.out.println("Blocking Deque: " + BD);
}
}
结果:
由于容量已满,无法插入元素 10
Blocking Deque: [74381793, 5278367, 35658786, 7855642]
程序2:
// Java 程序演示 BlockingDeque 的 offerFirst() 方法
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// 创建 BlockingDeque 对象
BlockingDeque<String> BD
= new LinkedBlockingDeque<String>(4);
// 在 BlockingDeque 的末尾添加数字
BD.offerFirst("abc");
BD.offerFirst("gopu");
BD.offerFirst("geeks");
BD.offerFirst("richik");
// 无法插入
BD.offerFirst("hii");
// 无法插入因此返回 false
if (!BD.offerFirst("hii"))
System.out.println("由于容量已满,无法插入元素 'hii'");
// 在移除之前打印队列
System.out.println("Blocking Deque: " + BD);
}
}
结果:
由于容量已满,无法插入元素 'hii'
Blocking Deque: [richik, geeks, gopu, abc]
参考资料: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingDeque.html#offerFirst(E)
极客教程