<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java `Deque`接口 > 原文: [https://www.programiz.com/java-programming/deque](https://www.programiz.com/java-programming/deque) #### 在本教程中,我們將學習`Deque`接口,如何使用它及其方法。 Java 集合框架的`Deque`接口提供雙端隊列的功能。 它擴展了`Queue`接口。 * * * ## 雙端隊列的工作原理 在常規隊列中,元素是從后面添加的,而從前面刪除的。 但是,在雙端隊列中,我們可以**從前面和后面**插入和刪除元素。 ![Working of deque (double-ended queue) data structure](https://img.kancloud.cn/2a/d2/2ad25e5f60e970be6b54d429679689a6_976x226.png) * * * ## `Deque`實現類 為了使用`Deque`接口的功能,我們需要使用實現它的類: * [`ArrayDeque`](/java-programming/arraydeque "Java ArrayDeque") * [`LinkedList`](/java-programming/linkedlist "Java LinkedList") ![ArrayDeque and Linkedlist implements Deque](https://img.kancloud.cn/de/97/de973408471d03302f7c4d26ed404f1e_840x430.png) * * * ## 如何使用`Deque`? 在 Java 中,我們必須導入`java.util.Deque`包才能使用`Deque`。 ```java // Array implementation of Deque Deque<String> animal1 = new ArrayDeque<>(); // LinkedList implementation of Deque Deque<String> animal2 = new LinkedList<>(); ``` 在這里,我們分別創建了`ArrayDeque`和`LinkedList`類的對象`animal1`和`animal2`。 這些對象可以使用`Deque`接口的功能。 * * * ## `Deque`方法 由于`Deque`擴展了`Queue`接口,因此它繼承了[`Queue`接口](/java-programming/queue "Java Queue interface")的所有方法。 除了`Queue`接口中可用的方法外,`Deque`接口還包括以下方法: * **`addFirst()`** - 在雙端隊列的開頭添加指定的元素。 如果雙端隊列已滿,則引發異常。 * **`addLast()`** - 在雙端隊列的末尾添加指定的元素。 如果雙端隊列已滿,則引發異常。 * **`offerFirst()`** - 在雙端隊列的開頭添加指定的元素。 如果雙端隊列已滿,則返回`false`。 * **`offerLast()`** - 在雙端隊列的末尾添加指定的元素。 如果雙端隊列已滿,則返回`false`。 * **`getFirst()`** - 返回雙端隊列的第一個元素。 如果雙端隊列為空,則引發異常。 * **`getLast()`** - 返回雙端隊列的最后一個元素。 如果雙端隊列為空,則引發異常。 * **`peekFirst()`** - 返回雙端隊列的第一個元素。 如果雙端隊列為空,則返回`null`。 * **`peekLast()`** - 返回雙端隊列的最后一個元素。 如果雙端隊列為空,則返回`null`。 * **`removeFirst()`** - 返回并刪除雙端隊列的第一個元素。 如果雙端隊列為空,則引發異常。 * **`removeLast()`** - 返回并刪除雙端隊列的最后一個元素。 如果雙端隊列為空,則引發異常。 * **`pollFirst()`** - 返回并刪除雙端隊列的第一個元素。 如果雙端隊列為空,則返回`null`。 * **`pollLast()`** - 返回并刪除雙端隊列的最后一個元素。 如果雙端隊列為空,則返回`null`。 * * * ## 雙端隊列作為棧數據結構 Java `Collections`框架的`Stack`類提供了棧的實現。 但是,建議使用`Deque`作為棧,而不是[棧類](/java-programming/stack "Java Stack class")。 這是因為`Stack`的方法是同步的。 以下是`Deque`接口提供的實現棧的方法: * `push()` - 在雙端隊列的開頭添加一個元素 * `pop()` - 從雙端隊列的開頭刪除元素 * `peek()` - 從雙端隊列的開頭返回一個元素 * * * ## `ArrayDeque`類中`Deque`的實現 ```java import java.util.Deque; import java.util.ArrayDeque; class Main { public static void main(String[] args) { // Creating Deque using the ArrayDeque class Deque<Integer> numbers = new ArrayDeque<>(); // add elements to the Deque numbers.offer(1); numbers.offerLast(2); numbers.offerFirst(3); System.out.println("Deque: " + numbers); // Access elements of the Deque int firstElement = numbers.peekFirst(); System.out.println("First Element: " + firstElement); int lastElement = numbers.peekLast(); System.out.println("Last Element: " + lastElement); // Remove elements from the Deque int removedNumber1 = numbers.pollFirst(); System.out.println("Removed First Element: " + removedNumber1); int removedNumber2 = numbers.pollLast(); System.out.println("Removed Last Element: " + removedNumber2); System.out.println("Updated Deque: " + numbers); } } ``` **輸出** ```java Deque: [3, 1, 2] First Element: 3 Last Element: 2 Removed First Element: 3 Removed Last Element: 2 Updated Deque: [1] ``` 要了解更多信息,請訪問 [Java ArrayDeque](/java-programming/arraydeque "Java ArrayDeque") 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看