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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

一、基础

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