当前位置: 首页>后端>正文

java queue

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


https://www.xamrdz.com/backend/3ck1936084.html

相关文章: