Java中的ArrayBlockingQueue remove()方法
ArrayBlockingQueue 是一个有界的阻塞队列,它将元素存储在内部由数组支持的队列中。
- ArrayBlockingQueue 类是Java Collections框架的成员。
- 有界是指它将具有固定大小,您不能存储超过队列容量的元素。
- 该队列遵循先进先出(FIFO)规则,用于从队列中存储和删除元素。
- 如果尝试将元素放入满队列或从空队列中取出元素,则队列将阻止您。
remove(Object o) 方法 从此队列中删除指定元素的单个实例 ,如果存在该元素。
我们可以说,如果该队列包含一个或多个这样的元素,则该方法将删除一个元素e,使得o.equals(e)。如果要删除的指定元素在此队列中,则Remove()方法返回true。
语法:
public boolean remove(Object o)
参数:
o – 要从此队列中删除的元素(如果存在)。
返回值:
如果要删除的指定元素在此队列中,则返回true。
下面的程序说明了ArrayBlockingQueue的remove(Object o)方法。
例1
//Java程序演示ArrayBlockingQueue的remove(Object o)方法。
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
public static void main(String[] args) throws InterruptedException
{
// 定义ArrayBlockingQueue的容量
int capacity = 5;
// 创建ArrayBlockingQueue对象
ArrayBlockingQueue<Integer> queue
= new ArrayBlockingQueue<Integer>(capacity);
// 使用put方法将元素添加到ArrayBlockingQueue中
queue.put(223);
queue.put(546);
queue.put(986);
// 打印队列
System.out.println("队列包含 " + queue);
// 删除223
boolean response = queue.remove(223);
// 打印队列
System.out.println("移除223:" + response);
// 打印队列
System.out.println("队列包含 " + queue);
// 删除546
response = queue.remove(546);
// 打印队列
System.out.println("移除546:" + response);
// 打印队列
System.out.println("队列包含 " + queue);
// 删除734,该元素不存在
response = queue.remove(734);
// 打印队列
System.out.println("移除734:" + response);
// 打印队列
System.out.println("队列包含 " + queue);
}
}
输出:
队列包含 [223,546,986]
移除223:true
队列包含 [546,986]
移除546:true
队列包含 [986]
移除734:false
队列包含 [986]
例2
// Java程序演示remove(Object o)
//方法的ArrayBlockingQueue。
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
public static void main(String[] args) throws InterruptedException
{
//定义ArrayBlockingQueue的容量
int容量=5;
//创建ArrayBlockingQueue的对象
ArrayBlockingQueue队列
= new ArrayBlockingQueue(capacity);
//使用put方法向ArrayBlockingQueue添加元素
队列.put("星球大战");
队列.put("超人");
队列.put("闪电侠");
队列.put("蝙蝠侠");
队列.put("复仇者联盟");
//打印队列
System.out.println("queue包含" +队列);
//删除星球大战
boolean回应=队列.remove("星球大战");
//打印队列
System.out.println("Removal of StarWars:"+回应);
//打印队列
System.out.println("queue包含" + 队列);
//删除绿巨人
回应=队列.remove("绿巨人");
//打印队列
System.out.println("Removal of Hulk:"+回应);
//打印队列
System.out.println("queue包含" +队列);
}
}
输出:
queue包含[星球大战,超人,闪电侠,蝙蝠侠,复仇者联盟]
Removal of StarWars:true
queue包含[超人,闪电侠,蝙蝠侠,复仇者联盟]
Removal of Hulk:false
queue包含[超人,闪电侠,蝙蝠侠,复仇者联盟]
参考资料:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#remove(java.lang.Object)
极客教程