You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
2.6 KiB

## 一、基础
ArrayDeque是数组实现的双端队列类似于LinkedList效率高于LinkedList
同时也可以当作栈来使用
## 二、特点
+ ArrayDeque是 Deque接口的一个实现使用了可变数组所以没有容量上的限制。同时 ArrayDeque是线程不安全的在没有外部同步的情况下不能再多线程环境下使用。
+ ArrayDeque是 Deque的实现类可以作为栈来使用效率高于 Stack也可以作为队列来使用效率高于 LinkedList。
+ ArrayDeque 是 Java 集合中双端队列的数组实现双端队列的链表实现LinkedList
+ ArrayDeque不支持 null值。
## 三、常用方法
+ 添加元素
+ addFirst(E e)在数组前面添加元素
+ addLast(E e)在数组后面添加元素
+ offerFirst(E e) 在数组前面添加元素,并返回是否添加成功
+ offerLast(E e) 在数组后天添加元素,并返回是否添加成功
+ 删除元素
+ removeFirst()删除第一个元素,并返回删除元素的值,如果元素为null将抛出异常
+ pollFirst()删除第一个元素并返回删除元素的值如果元素为null将返回null
+ removeLast()删除最后一个元素并返回删除元素的值如果为null将抛出异常
+ pollLast()删除最后一个元素并返回删除元素的值如果为null将返回null
+ removeFirstOccurrence(Object o) 删除第一次出现的指定元素
+ removeLastOccurrence(Object o) 删除最后一次出现的指定元素
+ 获取元素
+ getFirst() 获取第一个元素,如果没有将抛出异常
+ getLast() 获取最后一个元素,如果没有将抛出异常
+ 队列操作
+ add(E e) 在队列尾部添加一个元素
+ offer(E e) 在队列尾部添加一个元素,并返回是否成功
+ remove() 删除队列中第一个元素并返回该元素的值如果元素为null将抛出异常(其实底层调用的是removeFirst())
+ poll() 删除队列中第一个元素,并返回该元素的值,如果元素为null将返回null(其实调用的是pollFirst())
+ element() 获取第一个元素,如果没有将抛出异常
+ peek() 获取第一个元素如果返回null
+ 栈操作
+ push(E e) 栈顶添加一个元素
+ pop(E e) 移除栈顶元素,如果栈顶没有元素将抛出异常
+ 其他
+ size() 获取队列中元素个数
+ isEmpty() 判断队列是否为空
+ iterator() 迭代器,从前向后迭代
+ descendingIterator() 迭代器,从后向前迭代
+ contain(Object o) 判断队列中是否存在该元素
+ toArray() 转成数组
+ clear() 清空队列
+ clone() 克隆(复制)一个新的队列
![[Snipaste_2023-02-09_15-23-42.png]]