/** ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*********************//******* Written by Doug Lea with assistance from members of JCP JSR-166* Expert Group and released to the public domain, as explained at* http://creativecommons.org/publicdomain/zero/1.0/*/package java.util;/*** A collection designed for holding elements prior to processing.* Besides basic {@link Collection} operations, queues provide* additional insertion, extraction, and inspection operations.* Each of these methods exists in two forms: one throws an exception* if the operation fails, the other returns a special value (either* {@code null} or {@code false}, depending on the operation). The* latter form of the insert operation is designed specifically for* use with capacity-restricted {@code Queue} implementations; in most* implementations, insert operations cannot fail.** <table class="striped">* <caption>Summary of Queue methods</caption>* <thead>* <tr>* <td></td>* <th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th>* <th scope="col" style="font-weight:normal; font-style:italic">Returns special value</th>* </tr>* </thead>* <tbody>* <tr>* <th scope="row">Insert</th>* <td>{@link #add(Object) add(e)}</td>* <td>{@link #offer(Object) offer(e)}</td>* </tr>* <tr>* <th scope="row">Remove</th>* <td>{@link #remove() remove()}</td>* <td>{@link #poll() poll()}</td>* </tr>* <tr>* <th scope="row">Examine</th>* <td>{@link #element() element()}</td>* <td>{@link #peek() peek()}</td>* </tr>* </tbody>* </table>** <p>Queues typically, but do not necessarily, order elements in a* FIFO (first-in-first-out) manner. Among the exceptions are* priority queues, which order elements according to a supplied* comparator, or the elements' natural ordering, and LIFO queues (or* stacks) which order the elements LIFO (last-in-first-out).* Whatever the ordering used, the <em>head</em> of the queue is that* element which would be removed by a call to {@link #remove()} or* {@link #poll()}. In a FIFO queue, all new elements are inserted at* the <em>tail</em> of the queue. Other kinds of queues may use* different placement rules. Every {@code Queue} implementation* must specify its ordering properties.** <p>The {@link #offer offer} method inserts an element if possible,* otherwise returning {@code false}. This differs from the {@link* java.util.Collection#add Collection.add} method, which can fail to* add an element only by throwing an unchecked exception. The* {@code offer} method is designed for use when failure is a normal,* rather than exceptional occurrence, for example, in fixed-capacity* (or "bounded") queues.** <p>The {@link #remove()} and {@link #poll()} methods remove and* return the head of the queue.* Exactly which element is removed from the queue is a* function of the queue's ordering policy, which differs from* implementation to implementation. The {@code remove()} and* {@code poll()} methods differ only in their behavior when the* queue is empty: the {@code remove()} method throws an exception,* while the {@code poll()} method returns {@code null}.** <p>The {@link #element()} and {@link #peek()} methods return, but do* not remove, the head of the queue.** <p>The {@code Queue} interface does not define the <i>blocking queue* methods</i>, which are common in concurrent programming. These methods,* which wait for elements to appear or for space to become available, are* defined in the {@link java.util.concurrent.BlockingQueue} interface, which* extends this interface.** <p>{@code Queue} implementations generally do not allow insertion* of {@code null} elements, although some implementations, such as* {@link LinkedList}, do not prohibit insertion of {@code null}.* Even in the implementations that permit it, {@code null} should* not be inserted into a {@code Queue}, as {@code null} is also* used as a special return value by the {@code poll} method to* indicate that the queue contains no elements.** <p>{@code Queue} implementations generally do not define* element-based versions of methods {@code equals} and* {@code hashCode} but instead inherit the identity based versions* from class {@code Object}, because element-based equality is not* always well-defined for queues with the same elements but different* ordering properties.** <p>This interface is a member of the* <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">* Java Collections Framework</a>.** @since 1.5* @author Doug Lea* @param <E> the type of elements held in this queue*/public interface Queue<E> extends Collection<E> {/*** Inserts the specified element into this queue if it is possible to do so* immediately without violating capacity restrictions, returning* {@code true} upon success and throwing an {@code IllegalStateException}* if no space is currently available.** @param e the element to add* @return {@code true} (as specified by {@link Collection#add})* @throws IllegalStateException if the element cannot be added at this* time due to capacity restrictions* @throws ClassCastException if the class of the specified element* prevents it from being added to this queue* @throws NullPointerException if the specified element is null and* this queue does not permit null elements* @throws IllegalArgumentException if some property of this element* prevents it from being added to this queue*/boolean add(E e);/*** Inserts the specified element into this queue if it is possible to do* so immediately without violating capacity restrictions.* When using a capacity-restricted queue, this method is generally* preferable to {@link #add}, which can fail to insert an element only* by throwing an exception.** @param e the element to add* @return {@code true} if the element was added to this queue, else* {@code false}* @throws ClassCastException if the class of the specified element* prevents it from being added to this queue* @throws NullPointerException if the specified element is null and* this queue does not permit null elements* @throws IllegalArgumentException if some property of this element* prevents it from being added to this queue*/boolean offer(E e);/*** Retrieves and removes the head of this queue. This method differs* from {@link #poll() poll()} only in that it throws an exception if* this queue is empty.** @return the head of this queue* @throws NoSuchElementException if this queue is empty*/E remove();/*** Retrieves and removes the head of this queue,* or returns {@code null} if this queue is empty.** @return the head of this queue, or {@code null} if this queue is empty*/E poll();/*** Retrieves, but does not remove, the head of this queue. This method* differs from {@link #peek peek} only in that it throws an exception* if this queue is empty.** @return the head of this queue* @throws NoSuchElementException if this queue is empty*/E element();/*** Retrieves, but does not remove, the head of this queue,* or returns {@code null} if this queue is empty.** @return the head of this queue, or {@code null} if this queue is empty*/E peek();}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。