|  | 
| 23 | 23 | ### 集合方法 | 
| 24 | 24 | 
 | 
| 25 | 25 | ```java | 
| 26 |  | -void addFirst(E e) // 如果有足够的空间,将e插入头部 | 
| 27 |  | -void addLast(E e) // 如果有足够的空间,请在尾部插入e | 
| 28 |  | -void push(E e) // 如果有足够的空间,将e插入头部 | 
| 29 |  | -boolean removeFirstOccurrence(Object o); // 删除第一个出现的o | 
| 30 |  | -boolean removeLastOccurrence(Object o); // 删除最后一次出现的o | 
| 31 |  | -Iterator<E> descendingIterator() // 得到一个迭代器,以相反的顺序返回deque元素 | 
|  | 26 | +void addFirst(E e) // 如果有足够的空间,将e插入头部 | 
|  | 27 | +void addLast(E e) // 如果有足够的空间,请在尾部插入e | 
|  | 28 | +void push(E e) // 如果有足够的空间,将e插入头部 | 
|  | 29 | +boolean removeFirstOccurrence(Object o); // 删除第一个出现的o | 
|  | 30 | +boolean removeLastOccurrence(Object o); // 删除最后一次出现的o | 
|  | 31 | +Iterator<E> descendingIterator() // 得到一个迭代器,以相反的顺序返回deque元素 | 
| 32 | 32 | ``` | 
| 33 | 33 | 
 | 
| 34 | 34 | `addFirst` 和 `addLast` 方法的约定与 `Collection` 的 `add` 方法的约定类似,但另外指定要添加的元素的位置,如果不能添加,则引发的异常为  | 
|  | 
| 116 | 116 | 
 | 
| 117 | 117 | #### 实现 BlockingDeque | 
| 118 | 118 | 
 | 
| 119 |  | -接口 `BlockingDeque` 具有单个实现 `LinkedBlockingDeque`。`LinkedBlockingDeque` 基于类似 `LinkedList` 的双链表结构。除了两个标准构造函数之外,它可以有选择地被限制,它提供了第三个可以用来指定其容量的第三个构造函数: | 
|  | 119 | +接口 `BlockingDeque` 具有单个实现 `LinkedBlockingDeque`。`LinkedBlockingDeque` 基于类似 `LinkedList` 的双链表结构。除了两个标准构造函数之外, | 
|  | 120 | +它可以有选择地被限制,它提供了第三个可以用来指定其容量的第三个构造函数: | 
| 120 | 121 | 
 | 
| 121 | 122 | ```java | 
| 122 |  | -LinkedBlockingDeque(int capacity) | 
|  | 123 | +LinkedBlockingDeque(int capacity) | 
| 123 | 124 | ``` | 
| 124 | 125 | 
 | 
| 125 | 126 | 它具有与 `LinkedBlockingQueue` 类似的性能特征 - 队列插入和删除需要不断的时间和操作,比如包含需要遍历队列的操作,需要线性时间。迭代器是弱一致的。 | 
|  | 
0 commit comments