Java源码阅读之ArrayDeque
2017-12-20 23:30
253 查看
ArrayDeque是Deque接口的可调整大小的实现。 ArrayDeque没有容量限制,可以根据需要增长容量以支持使用。
ArrayDeque不支持null元素。可以当作
ArrayDeque是线程不安全的,在没有外部同步的情况下,不支持多线程的并发访问。和Stack比较,Stack是线程安全的,但是效率不高,因为它是
和LinkedList、ArrayList一样,ArrayDeque的迭代器是
这里ArrayDeque使用上和ArrayList以及LinkedList很相似,下面一个简单的示例:
输出:
可以看出:
ArrayDeque可以作为
ArrayDeque也可以作为
这里不在赘述。
ArrayDeque不支持null元素。可以当作
stack或者
queue使用, 当用作
stack时,ArrayDeque可能比Stack快,在用作
queue时比LinkedList快。
ArrayDeque是线程不安全的,在没有外部同步的情况下,不支持多线程的并发访问。和Stack比较,Stack是线程安全的,但是效率不高,因为它是
synchronized的。在不需要线程安全的场所,ArrayDeque是可以完全替代Stack的。
和LinkedList、ArrayList一样,ArrayDeque的迭代器是
fast-fail的。此外如果对ArrayDeque实例的修改发生在其迭代器创建之后,除了迭代器自身的
remove(),所有的其它迭代器操作都会抛出
ConcurrentModificationException异常。
这里ArrayDeque使用上和ArrayList以及LinkedList很相似,下面一个简单的示例:
package com.company; import java.util.ArrayDeque; import java.util.LinkedList; import java.util.List; public class CollectionTest { public static void main(String[] args) { List<String> list = new LinkedList<String>(); list.add("12"); list.add("34"); list.add("56"); list.add("78"); ArrayDeque<String> deque = new ArrayDeque<String>(); deque.add("90"); deque.addAll(list); System.out.println(deque.remove("90")); deque.push("er"); System.out.println(deque.pop()); System.out.println(deque.peek()); System.out.println(deque.poll()); System.out.println(deque.pollLast()); System.out.println(deque); } }
输出:
可以看出:
ArrayDeque可以作为
queue,
addFirst然后
removeLast
ArrayDeque也可以作为
stack时,
push然后
pop。
这里不在赘述。
相关文章推荐
- Java源码阅读之ArrayDeque
- java源码阅读之ArrayBlockingQueue
- java.util.ArrayDeque源码解析
- java1.7集合源码阅读:ArrayBlockingQueue
- Java多线程 -- JUC包源码分析5 -- Condition/ArrayBlockingQueue/LinkedBlockingQueue/Deque/PriorityBlockingQueu
- 《java.util.concurrent 包源码阅读》06 ArrayBlockingQueue
- Java多线程 -- JUC包源码分析5 -- Condition/ArrayBlockingQueue/LinkedBlockingQueue/Deque/PriorityBlockingQueue
- Java 容器源码分析之 Deque 与 ArrayDeque
- Java源码阅读的真实体会
- java源码阅读系列-ArrayList
- Java源码阅读之String(终)
- Java HahsMap源码阅读
- 如何阅读Java源码
- JAVA 集合类(java.util)源码阅读笔记------LinkedList
- Java源码阅读-ArrayList
- Memcache-Java-Client-Release源码阅读(之五)
- JDK源码阅读——java.lang.Boolean
- java1.7集合源码阅读: Vector
- Java集合(13)——Queue与Deque源码解析
- 关于java ArrayBlockingQueue 源码解析的小疑惑