Java 菜鳥教程

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的類

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

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)建了類ArrayDeque和LinkedList的對(duì)象animal1和animal2。 這些對(duì)象可以使用Deque接口的功能。

雙端隊(duì)列的方法

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

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

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

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

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

  • offerLast() - 在雙端隊(duì)列的末尾添加指定的元素。如果雙端隊(duì)列已滿,則返回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類提供了堆棧的實(shí)現(xiàn)。

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

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

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

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

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

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

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

class Main {

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

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

        //訪問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問Java ArrayDeque。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清