Java中LinkedBlockingDeque poll()方法
在Java中,LinkedBlockingDeque
是一个经典的双向队列。它支持FIFO(先进先出)和LIFO(后进先出)两种操作。本文将介绍poll()
方法,它是LinkedBlockingDeque
中非常常用的方法。
LinkedBlockingDeque简介
LinkedBlockingDeque
继承自AbstractQueue
类,它实现了BlockingDeque
和Serializable
接口。可以通过以下代码创建一个LinkedBlockingDeque
实例:
LinkedBlockingDeque<Integer> deque = new LinkedBlockingDeque<>(10);
这里创建了一个最大容量为10的LinkedBlockingDeque
实例。
注意:LinkedBlockingDeque
是一个有界队列,它的容量是有限制的。
poll()方法介绍
poll()
方法是一个非阻塞方法,用来从队首删除一个元素。如果队列为空,poll()
方法会返回null
。下面是poll()
方法的声明:
public E poll()
其中,E
表示泛型,代表队列中存储的元素类型。
poll()方法示例
下面是一个简单的poll()
方法示例,它演示了如何使用poll()
方法删除队首元素。
LinkedBlockingDeque<Integer> deque = new LinkedBlockingDeque<>(10);
deque.add(1);
deque.add(2);
deque.add(3);
System.out.println(deque.poll()); // 输出1
System.out.println(deque.poll()); // 输出2
System.out.println(deque.poll()); // 输出3
System.out.println(deque.poll()); // 输出null
我们首先创建了一个最大容量为10的LinkedBlockingDeque
实例,然后依次向队列中添加了数字1、2、3。接着,我们使用poll()
方法从队首删除元素,并将其打印出来。最后,我们再次使用poll()
方法删除所有元素,注意到当队列为空时,poll()
方法返回null
。
poll()方法演示
下面我们将演示使用poll()
方法实现FIFO和LIFO两种操作。首先,我们使用poll()
方法来实现FIFO操作:
LinkedBlockingDeque<Integer> deque = new LinkedBlockingDeque<>(10);
deque.add(1);
deque.add(2);
deque.add(3);
while (!deque.isEmpty()) {
System.out.println(deque.poll()); // 输出1、2、3
}
在这个示例中,我们向队列中添加了数字1、2、3。接着,我们使用while
循环遍历队列中的元素,每次使用poll()
方法从队首删除元素,并将其打印出来。由于poll()
方法会自动删除队首元素,因此我们完成了FIFO操作。
接下来,我们使用pollLast()
方法来实现LIFO操作:
LinkedBlockingDeque<Integer> deque = new LinkedBlockingDeque<>(10);
deque.add(1);
deque.add(2);
deque.add(3);
while (!deque.isEmpty()) {
System.out.println(deque.pollLast()); // 输出3、2、1
}
在这个示例中,我们向队列中添加了数字1、2、3。接着,我们使用while
循环遍历队列中的元素,每次使用pollLast()
方法从队尾删除元素,并将其打印出来。由于pollLast()
方法会自动删除队尾元素,因此我们完成了LIFO操作。
结论
本文介绍了Java中LinkedBlockingDeque
的poll()
方法。我们首先简要地介绍了LinkedBlockingDeque
的概念,然后介绍了poll()
方法的语法和用法。随后,我们演示了如何使用poll()
方法实现FIFO和LIFO两种操作。希望本文能对大家有所帮助。