亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Java 菜鳥(niǎo)教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java Deque 接口

在本教程中,我們將學(xué)習(xí)Deque接口,如何使用它及其方法。

Java集合框架的Deque接口提供了雙端隊(duì)列(Deque)的功能。它繼承了Queue接口。

雙端隊(duì)列的工作原理

在常規(guī)隊(duì)列中,元素是從后面添加的,而從前面刪除的。但是,在雙端隊(duì)列中,我們可以從前后插入和刪除元素

雙端隊(duì)列數(shù)據(jù)結(jié)構(gòu)的工作

實(shí)現(xiàn)Deque的類(lèi)

為了使用Deque接口的功能,我們需要使用實(shí)現(xiàn)接口的類(lèi):

ArrayDeque和Linkedlist實(shí)現(xiàn)Deque

如何使用Deque?

在Java中,我們必須導(dǎo)入要使用Deque的包 java.util.Deque 。

Deque<String> animal1 = new ArrayDeque<>();

Deque<String> animal2 = new LinkedList<>();

在這里,我們分別創(chuàng)建了類(lèi)ArrayDeque和LinkedList的對(duì)象animal1和animal2。 這些對(duì)象可以使用Deque接口的功能。

雙端隊(duì)列的方法

由于Deque繼承了Queue接口,因此它繼承了Queue接口的所有方法。

除了Queue接口中可用的方法之外,Deque界面還包括以下方法:

  • addFirst() - 在雙端隊(duì)列的開(kāi)頭添加指定的元素。如果雙端隊(duì)列已滿(mǎn),則引發(fā)異常。

  • addLast() - 在雙端隊(duì)列的末尾添加指定的元素。如果雙端隊(duì)列已滿(mǎn),則引發(fā)異常。

  • offerFirst() - 在雙端隊(duì)列的開(kāi)頭添加指定的元素。如果雙端隊(duì)列已滿(mǎn),則返回false。

  • offerLast() - 在雙端隊(duì)列的末尾添加指定的元素。如果雙端隊(duì)列已滿(mǎn),則返回false。

  • getFirst() - 返回雙端隊(duì)列的第一個(gè)元素。如果雙端隊(duì)列為空,則引發(fā)異常。

  • getLast() - 返回雙端隊(duì)列的最后一個(gè)元素。如果雙端隊(duì)列為空,則引發(fā)異常。

  • peekFirst() - 返回雙端隊(duì)列的第一個(gè)元素。如果雙端隊(duì)列為空,則返回null。

  • peekLast() - 返回雙端隊(duì)列的最后一個(gè)元素。如果雙端隊(duì)列為空,則返回null。

  • removeFirst() - 返回并刪除雙端隊(duì)列的第一個(gè)元素。如果雙端隊(duì)列為空,則引發(fā)異常。

  • removeLast() - 返回并刪除雙端隊(duì)列的最后一個(gè)元素。如果雙端隊(duì)列為空,則引發(fā)異常。

  • pollFirst() - 返回并刪除雙端隊(duì)列的第一個(gè)元素。如果雙端隊(duì)列為空,則返回null。

  • pollLast() - 返回并刪除雙端隊(duì)列的最后一個(gè)元素。如果雙端隊(duì)列為空,則返回null。

雙端隊(duì)列作為堆棧數(shù)據(jù)結(jié)構(gòu)

Java Collections框架的Stack類(lèi)提供了堆棧的實(shí)現(xiàn)。

但是,建議Deque用作堆棧而不是Stack類(lèi)。這是因?yàn)镾tack的方法是同步的。

以下是Deque接口提供的用于實(shí)現(xiàn)堆棧的方法:

  • push() - 在雙端隊(duì)列的開(kāi)頭添加元素

  • pop() - 從雙端隊(duì)列的開(kāi)頭刪除元素

  • peek() - 從雙端隊(duì)列的開(kāi)頭返回一個(gè)元素

ArrayDeque類(lèi)中Deque的實(shí)現(xiàn)

import java.util.Deque;
import java.util.ArrayDeque;

class Main {

    public static void main(String[] args) {
        // 使用ArrayDeque類(lèi)創(chuàng)建Deque 
        Deque<Integer> numbers = new ArrayDeque<>();

        //添加元素到Deque
        numbers.offer(1);
        numbers.offerLast(2);
        numbers.offerFirst(3);
        System.out.println("Deque: " + numbers);

        //訪(fǎng)問(wèn)Deque的元素
        int firstElement = numbers.peekFirst();
        System.out.println("第一個(gè)元素: " + firstElement);

        int lastElement = numbers.peekLast();
        System.out.println("最后一個(gè)元素: " + lastElement);

        //從Deque 移除元素
        int removedNumber1 = numbers.pollFirst();
        System.out.println("移除第一個(gè)元素: " + removedNumber1);

        int removedNumber2 = numbers.pollLast();
        System.out.println("移除最后一個(gè)元素: " + removedNumber2);

        System.out.println("更新后的Deque: " + numbers);
    }
}

輸出結(jié)果

Deque: [3, 1, 2]
第一個(gè)元素: 3
最后一個(gè)元素: 2
移除第一個(gè)元素: 3
移除最后一個(gè)元素: 2
更新后的Deque: [1]

要了解更多信息,請(qǐng)?jiān)L問(wèn)Java ArrayDeque