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.
2.6 KiB
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() 克隆(复制)一个新的队列