主要是記錄一下add,push,poll這三個常用api,因為這三個就是棧和隊列一念之差的關鍵
1.add(E e)
?方法
- ?作用:將元素添加到雙端隊列的尾部?(等價于?
addLast(E e)
)。 - ?行為:
- ?成功時:返回?
true
。 - ?失敗時:如果隊列有容量限制且已滿,拋出?
IllegalStateException
。
- ?成功時:返回?
- ?適用場景:用作普通隊列(FIFO)時,向隊尾添加元素
-
java
Deque<Integer> deque = new ArrayDeque<>(); deque.add(1); // 隊尾添加 1 → [1] deque.add(2); // 隊尾添加 2 → [1, 2]
?2.?push(E e)
?方法
- ?作用:將元素壓入雙端隊列的頭部?(等價于?
addFirst(E e)
)。 - ?行為:
- ?成功時:無返回值。
- ?失敗時:如果隊列有容量限制且已滿,拋出?
IllegalStateException
。
- ?適用場景:用作棧(LIFO)時,向棧頂壓入元素
-
java
Deque<Integer> deque = new ArrayDeque<>(); deque.push(1); // 隊頭壓入 1 → [1] deque.push(2); // 隊頭壓入 2 → [2, 1]
?3.?poll()
?方法
- ?作用:移除并返回雙端隊列頭部的元素(等價于?
pollFirst()
)。 - ?行為:
- ?隊列非空時:返回隊首元素。
- ?隊列為空時:返回?
null
(不會拋出異常)。
- ?適用場景:安全地移除隊首元素(避免異常)
-
java
Deque<Integer> deque = new ArrayDeque<>(Arrays.asList(1, 2, 3)); int first = deque.poll(); // 移除并返回 1 → 剩余 [2, 3] int empty = deque.poll(); // 如果隊列為空,返回 null