Java中的LinkedBlockingQueue size()方法
LinkedBlockingQueue的 size() 方法返回它包含的元素数量。当队列为空时,size()返回0,当队列已满时,size()返回队列的容量。
语法:
public int size()
返回值: 此方法返回LinkedBlockingQueue中元素的数量。返回类型为int。
以下程序说明了LinkedBlockingQueue类的size()方法:
程序1: 在LinkedBlockingQueue上执行add和remove操作。在每个操作之后,使用size()打印队列的大小。
//Java程序演示LinkedBlockingQueue的size()方法
import java.util.concurrent.LinkedBlockingQueue;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
//定义LinkedBlockingQueue的容量
int capacityOfQueue = 4;
//创建LinkedBlockingQueue对象
LinkedBlockingQueue<String> linkedQueue
= new LinkedBlockingQueue<String>(capacityOfQueue);
//使用put()方法添加元素
linkedQueue.put("Karan");
linkedQueue.put("Suraj");
//使用size()方法获取队列大小
int size = linkedQueue.size();
//打印队列元素和队列大小
System.out.println("Queue中的元素为:" + linkedQueue);
System.out.println("Queue的大小为:" + size);
//添加更多元素
linkedQueue.put("Harsh");
linkedQueue.put("Rahul");
//使用size()方法获取队列大小
size = linkedQueue.size();
//打印队列元素和队列大小
System.out.println("Queue中的元素为:" + linkedQueue);
System.out.println("Queue的大小为:" + size);
//尝试从队列中删除元素
boolean try1 = linkedQueue.remove("Karan");
System.out.println("元素名Karan被移除了:" + try1);
//使用size()方法获取队列大小
size = linkedQueue.size();
//打印队列元素和队列大小
System.out.println("Queue中的元素为:" + linkedQueue);
System.out.println("Queue的大小为:" + size);
}
}
输出:
Queue中的元素为:[Karan, Suraj]
Queue的大小为:2
Queue中的元素为:[Karan, Suraj, Harsh, Rahul]
Queue的大小为:4
元素名Karan被移除了:true
Queue中的元素为:[Suraj, Harsh, Rahul]
Queue的大小为:3
程序2: 在包含员工对象的LinkedBlockingQueue上执行add和remove操作。在每个操作之后,使用size()打印队列的大小。
// Java程序演示LinkedBlockingQueue的size()方法
import java.util.Iterator;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG {
public void sizeDemo() throws InterruptedException
{
// 定义LinkedBlockingQueue的容量
int capacityOfQueue = 5;
// 创建LinkedBlockingQueue对象
LinkedBlockingQueue<Employee> linkedQueue
= new LinkedBlockingQueue<Employee>(capacityOfQueue);
// 使用size()方法获取队列的大小
int size = linkedQueue.size();
System.out.println("队列的大小 " + size);
// 向LinkedBlockingQueue中添加元素
Employee emp1 = new Employee("Ranjeet", "测试员", "29000", 27);
Employee emp2 = new Employee("Sanjeet", "经理", "98000", 34);
Employee emp3 = new Employee("Karan", "分析师", "44000", 30);
// 使用put(E e)方法向linkedQueue中添加employee对象
linkedQueue.put(emp1);
linkedQueue.put(emp2);
linkedQueue.put(emp3);
// 打印linkedQueue的细节
System.out.println("\n添加元素后,队列变为:");
Iterator itr = linkedQueue.iterator();
while (itr.hasNext())
System.out.println(itr.next());
// 使用size()方法获取队列的大小
size = linkedQueue.size();
System.out.println("\n添加元素后,队列的大小 " + size);
// 从linkedQueue中删除employee2的姓名Sanjeet和Ranjeet
linkedQueue.remove(emp2);
linkedQueue.remove(emp1);
// 打印linkedQueue的细节
System.out.println("\n删除某些元素后,队列变为:");
itr = linkedQueue.iterator();
while (itr.hasNext())
System.out.println(itr.next());
// 使用size()方法获取队列的大小
size = linkedQueue.size();
System.out.println("\n删除元素后,队列的大小 " + size);
}
// 创建一个Employee对象,包含姓名、职位、薪资和年龄等属性
public class Employee {
public String name;
public String position;
public String salary;
public int Age;
Employee(String name, String position,
String salary, int age)
{
this.name = name;
this.position = position;
this.salary = salary;
this.Age = age;
}
@Override
public String toString()
{
return "Employee [姓名=" + name + ", 职位="
+ position + ", 薪资=" + salary + ", 年龄=" + Age + "]";
}
}
// 主方法
public static void main(String[] args)
{
GFG gfg = new GFG();
try {
gfg.sizeDemo();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出:
队列的大小 0
添加元素后,队列变为:
Employee [姓名=Ranjeet, 职位=测试员, 薪资=29000, 年龄=27]
Employee [姓名=Sanjeet, 职位=经理, 薪资=98000, 年龄=34]
Employee [姓名=Karan, 职位=分析师, 薪资=44000, 年龄=30]
添加元素后,队列的大小 3
删除某些元素后,队列变为:
Employee [姓名=Karan, 职位=分析师, 薪资=44000, 年龄=30]
删除元素后,队列的大小 1
参考资料:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingQueue.html#size–
极客教程