📜  Java中的 LinkedBlockingDeque getFirst() 方法(1)

📅  最后修改于: 2023-12-03 15:01:53.997000             🧑  作者: Mango

Java中的 LinkedBlockingDeque getFirst() 方法

LinkedBlockingDeque 是Java中提供的阻塞式双端队列,是一个支持高并发的数据结构。它实现了 Deque 接口,拥有队列和栈的两种操作方式,具有先进先出和后进先出两种存储方式。getFirst() 方法是 LinkedBlockingDeque 类中的一个实例方法,用于获取队列头部的元素。

语法
public E getFirst()
参数

无参数。

返回值

该方法返回队列头部的元素,如果队列为空,则抛出 NoSuchElementException 异常。

实例

下面是一个简单的示例,演示了如何使用 getFirst() 方法获取队列头部的元素:

import java.util.concurrent.LinkedBlockingDeque;
import java.util.NoSuchElementException;

public class LinkedBlockingDequeGetFirstExample {
    public static void main(String[] args) {
        LinkedBlockingDeque<String> deque = new LinkedBlockingDeque<>(2);
        deque.addLast("Java");
        deque.addLast("Python");
        
        try {
            String first = deque.getFirst();
            System.out.println("队列的头部元素是:" + first);
        } catch (NoSuchElementException ex) {
            System.out.println("队列为空,无法获取头部元素。");
        }
        
        deque.pollFirst();
        deque.pollFirst();
        try {
            String first = deque.getFirst();
            System.out.println("队列的头部元素是:" + first);
        } catch (NoSuchElementException ex) {
            System.out.println("队列为空,无法获取头部元素。");
        }
    }
}

输出:

队列的头部元素是:Java
队列为空,无法获取头部元素。

在上述示例中,我们首先创建了一个容量为2的 LinkedBlockingDeque 实例,并向队列中添加了两个元素。接着,我们使用 getFirst() 方法获取队列头部的元素,并输出了获取到的结果。由于队列中有元素,这个过程不会出现异常,因此输出了“队列的头部元素是:Java”。

接下来,我们使用 pollFirst() 方法逐步移除了队列中的两个元素,此时队列为空。在尝试使用 getFirst() 方法获取队列头部的元素时,由于队列为空,它会抛出 NoSuchElementException 异常,因此输出了“队列为空,无法获取头部元素。”

异常
  • NoSuchElementException:如果队列为空,则抛出此异常。