001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    package org.apache.commons.collections;
018    
019    /**
020     * Defines a collection for priority queues, which can insert, peek and pop.
021     * <p>
022     * This interface is now replaced by the <code>Buffer</code> interface.
023     *
024     * @deprecated Replaced by the Buffer interface and implementations in buffer subpackage.
025     *  Due to be removed in v4.0.
026     * @since Commons Collections 1.0
027     * @version $Revision: 646777 $ $Date: 2008-04-10 13:33:15 +0100 (Thu, 10 Apr 2008) $
028     * 
029     * @author Peter Donald
030     */
031    public interface PriorityQueue {
032        
033        /**
034         * Clear all elements from queue.
035         */
036        void clear();
037    
038        /**
039         * Test if queue is empty.
040         *
041         * @return true if queue is empty else false.
042         */
043        boolean isEmpty();
044    
045        /**
046         * Insert an element into queue.
047         *
048         * @param element the element to be inserted
049         *
050         * @throws ClassCastException if the specified <code>element</code>'s
051         * type prevents it from being compared to other items in the queue to
052         * determine its relative priority.  
053         */
054        void insert(Object element);
055    
056        /**
057         * Return element on top of heap but don't remove it.
058         *
059         * @return the element at top of heap
060         * @throws java.util.NoSuchElementException if <code>isEmpty() == true</code>
061         */
062        Object peek();
063    
064        /**
065         * Return element on top of heap and remove it.
066         *
067         * @return the element at top of heap
068         * @throws java.util.NoSuchElementException if <code>isEmpty() == true</code>
069         */
070        Object pop();
071        
072    }