首頁常見問題正文

在Queue中poll()和remove()有什么區(qū)別?

更新時(shí)間:2023-04-10 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Java中,Queue是一個(gè)接口,它有許多實(shí)現(xiàn)類,如LinkedList,PriorityQueue等。Queue接口提供了許多方法,其中poll()和remove()是兩個(gè)常用的方法。它們的區(qū)別在于,當(dāng)隊(duì)列為空時(shí),poll()方法返回null,而remove()方法會(huì)拋出NoSuchElementException異常。

  下面是Java代碼演示poll()和remove()方法的區(qū)別:

import java.util.LinkedList;
import java.util.Queue;

public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        // 添加元素到隊(duì)列
        queue.offer("A");
        queue.offer("B");
        queue.offer("C");
        
        // 使用poll()方法獲取并移除隊(duì)列頭部的元素
        System.out.println("使用poll()方法獲取并移除隊(duì)列頭部的元素:");
        while(!queue.isEmpty()){
            System.out.println(queue.poll());
        }
        
        // 重新添加元素到隊(duì)列
        queue.offer("A");
        queue.offer("B");
        queue.offer("C");
        
        // 使用remove()方法獲取并移除隊(duì)列頭部的元素
        System.out.println("使用remove()方法獲取并移除隊(duì)列頭部的元素:");
        while(!queue.isEmpty()){
            System.out.println(queue.remove());
        }
    }
}

  輸出結(jié)果為:

使用poll()方法獲取并移除隊(duì)列頭部的元素:
A
B
C
使用remove()方法獲取并移除隊(duì)列頭部的元素:
A
B
C

  在第一個(gè)while循環(huán)中,我們使用了poll()方法獲取并移除隊(duì)列頭部的元素,這時(shí)隊(duì)列為空,循環(huán)結(jié)束。在第二個(gè)while循環(huán)中,我們使用了remove()方法獲取并移除隊(duì)列頭部的元素,由于隊(duì)列為空,這時(shí)會(huì)拋出NoSuchElementException異常。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!