Queue.java revision fdb2704414a9ed92394ada0d1395e4db86889465
1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17package java.util;
18
19/**
20 * A kind of collection provides advanced operations than other basic
21 * collections, such as insertion, extraction, and inspection.
22 *
23 * Generally, a queue orders its elements by means of first-in-first-out. While
24 * priority queue orders its elements according to a comparator specified or the
25 * elements' natural order. Furthermore, a stack orders its elements
26 * last-in-first out.
27 *
28 * A typical queue does not allow null to be inserted as its element, while some
29 * implementations such as LinkedList allow it. But null should not be inserted
30 * even in these implementations, since method poll return null to indicate that
31 * there is no element left in the queue.
32 *
33 * Queue does not provide blocking queue methods, which will block until the
34 * operation of the method is allowed. BlockingQueue interface defines such
35 * methods.
36 */
37public interface Queue<E> extends Collection<E> {
38
39    /**
40     * Inserts the specified element into the queue provided that the condition
41     * allows such an operation. The method is generally preferable to the
42     * collection.add(E), since the latter might throw an exception if the
43     * operation fails.
44     *
45     * @param o
46     *            the specified element to insert into the queue.
47     * @return true if the operation succeeds and false if it fails.
48     */
49    public boolean offer(E o);
50
51    /**
52     * Gets and removes the element in the head of the queue, or returns null if
53     * there is no element in the queue.
54     *
55     * @return the element in the head of the queue or null if there is no
56     *         element in the queue.
57     */
58    public E poll();
59
60    /**
61     * Gets and removes the element in the head of the queue. Throws a
62     * NoSuchElementException if there is no element in the queue.
63     *
64     * @return the element in the head of the queue.
65     * @throws NoSuchElementException
66     *             if there is no element in the queue.
67     */
68    public E remove();
69
70    /**
71     * Gets but not removes the element in the head of the queue, or throws
72     * exception if there is no element in the queue.
73     *
74     * @return the element in the head of the queue or null if there is no
75     *         element in the queue.
76     */
77    public E peek();
78
79    /**
80     * Gets but not removes the element in the head of the queue. Throws a
81     * NoSuchElementException if there is no element in the queue.
82     *
83     * @return the element in the head of the queue.
84     * @throws NoSuchElementException
85     *             if there is no element in the queue.
86     */
87    public E element();
88
89}
90