Java集合源码学习(13)_Queue接口以及基础实现AbstractQueue
2014-07-21 20:26
756 查看
1:Queue接口
继承接口Collection;通常而言,顺序是FIFO,例外是优先级队列(顺序由指定的Comparator来决定)和栈(LIFO)
增加了下面几个方法:
Throws exception | Returns special value | |
Insert | add(e) | offer(e) |
Remove | remove() | poll() |
Examine | element() | peek() |
2:AbstractQueue
add()、remove()、element()是基于offer()、poll()、peek()来实现的;代码如下:
public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E> { protected AbstractQueue() { } public boolean add(E e) { if (offer(e)) return true; else throw new IllegalStateException("Queue full"); } public E remove() { E x = poll(); if (x != null) return x; else throw new NoSuchElementException(); } public E element() { E x = peek(); if (x != null) return x; else throw new NoSuchElementException(); } public void clear() { while (poll() != null) ; } public boolean addAll(Collection<? extends E> c) { if (c == null) throw new NullPointerException(); if (c == this) throw new IllegalArgumentException(); boolean modified = false; Iterator<? extends E> e = c.iterator(); while (e.hasNext()) { if (add(e.next())) modified = true; } return modified; } }
相关文章推荐
- Java集合源码学习(16)_BlockingQueue接口的实现ArrayBlockingQueue
- Java集合源码学习(5)_List接口的基础实现AbstractList
- Java集合源码学习(9)_Set接口的基础实现AbstractSet
- Java集合源码学习(15)_Queue接口的实现PriorityQueue和PriorityBlockingQueue
- Java集合源码学习(17)_BlockingQueue接口的实现LinkedBlockingQueue
- Java集合源码学习(10)_Set接口的实现HashSet
- 深入Java基础(三)--集合(1)集合父类以及父接口源码及理解
- Java集合源码学习(11)_Set接口的实现LinkedHashSet
- Java集合源码学习(3)_Collection接口的基础实现AbstractCollection
- Java集合源码学习(8)_List接口的实现_CopyOnWriteArrayList
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源码解析
- Java集合源码学习(6)_List接口的实现_ArrayList_Vector
- Java集合源码学习(7)_List接口的实现_LinkedList
- java基础学习集合之list实现类 九-3
- Java集合源码学习(22)_NavigableMap接口的实现TreeMap
- Java集合源码学习(20)_Map接口的实现HashMap
- 13. Java类集 Part 1(类集、Collection接口、List接口、Set接口、SortedSet接口、集合的输出) ----- 学习笔记
- 深入Java集合学习系列:ConcurrentLinkedQueue及其实现原理
- Java集合源码学习(24)_ConcurrentMap的实现类ConcurrentHashMap
- 黑马程序员 java基础 实现runnable接口问题 学习日志