java 队列 queue接口? 继承了collecion接口
添加:1,boolean add(E e); 向队列尾部添加一个元素,如果队列已满,则抛出一个IIIegaISlabEepeplian异常
2.boolean offer(E e); 向队列尾部添加一个元素?如果队列已满返回false
移除:1:E poll();? ?获取返回头部第一个元素,并移除队列头部第一个元素。??如果队列为空,则返回null
2:E remove(); 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
查看: 1:E peek();? ?获取返回头部第一个元素。如果队列为空则返回null
2:E element();??返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
接口:BlockingQueue 继承了queue
插入元素
add(E e) :往队列插入数据,当队列满时,插入元素时会抛出IllegalStateException异常;
offer(E e):当往队列插入数据时,插入成功返回true,否则则返回false。当队列满时不会抛出异常;
put:当阻塞队列容量已经满时,往阻塞队列插入数据的线程会被阻塞,直至阻塞队列已经有空余的容量可供使用;
offer(E e, long timeout, TimeUnit unit):若阻塞队列已经满时,同样会阻塞插入数据的线程,直至阻塞队列已经有空余的地方,与put方法不同的是,该方法会有一个超时时间,若超过当前给定的超时时间,插入数据的线程会退出;
删除元素
remove(Object o):从队列中删除数据,成功则返回true,否则为false
poll:删除数据,当队列为空时,返回null;
//queue接口里没有的
take():当阻塞队列为空时,获取队头数据的线程会被阻塞;
poll(long timeout, TimeUnit unit):当阻塞队列为空时,获取数据的线程会被阻塞,另外,如果被阻塞的线程超过了给定的时长,该线程会退出
查看元素
element:获取队头元素,如果队列为空时则抛出NoSuchElementException异常;
peek:获取队头元素,如果队列为空则抛出NoSuchElementException异常
接口:Deque 继承了queue?
双端队列(Double Ended Queue)
添加元素
队首:addFirst(E e) / offerFirst(E e)
队尾:addLast(E e) / offerLast(E e)
删除元素:
队首:E removeFirst() / E pollFirst()
队尾:E removeLast() / E pollLast()
查看元素:
队首?E getFirst() / E peekFirst()
队尾?E getLast() / E peekLast()
Deque接口的实现类有ArrayDeque?
https://www.jianshu.com/writer#/notebooks/52022042/notes/109090239
,ConcurrentLinkedDeque
,IdentityLinkedList,JSONListAdapter,KeepAliveStreamCleaner
LinkedBlockingDeque,LinkedList,ListAdapter
类:PriorityQueue 实现了queue接口
https://www.jianshu.com/writer#/notebooks/52022042/notes/108817886
接口
BlockingQueue
类:PriorityBlockingQueue实现了BlockingQueue和queue接口
https://www.jianshu.com/writer#/notebooks/52022042/notes/108870961