Java tutorial
//package opennlp.tools.util; import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet; /** * An implementation of the Heap interface based on {@link java.util.SortedSet}. * This implementation will not allow multiple objects which are equal to be added to the heap. * Only use this implementation when object in the heap can be totally ordered (no duplicates). */ public class TreeHeap implements Heap { private SortedSet tree; /** * Creates a new tree heap. */ public TreeHeap() { tree = new TreeSet(); } /** * Creates a new tree heap of the specified size. * @param size The size of the new tree heap. */ public TreeHeap(int size) { tree = new TreeSet(); } public Object extract() { Object rv = tree.first(); tree.remove(rv); return rv; } public Object first() { return tree.first(); } public Object last() { return tree.last(); } public Iterator iterator() { return tree.iterator(); } public void add(Object o) { tree.add(o); } public int size() { return tree.size(); } public void clear() { tree.clear(); } public boolean isEmpty() { return this.tree.isEmpty(); } public static void main(String[] args) { Heap heap = new TreeHeap(5); for (int ai = 0; ai < args.length; ai++) { heap.add(Integer.valueOf(Integer.parseInt(args[ai]))); } while (!heap.isEmpty()) { System.out.print(heap.extract() + " "); } System.out.println(); } } /////////////////////////////////////////////////////////////////////////////// //Copyright (C) 2003 Thomas Morton // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this program; if not, write to the Free Software //Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// /** Interface for interacting with a Heap data structure. * This implementation extract objects from smallest to largest based on either * their natural ordering or the comparator provided to an implementation. * While this is a typical of a heap it allows this objects natural ordering to * match that of other sorted collections. * */ interface Heap { /** * Removes the smallest element from the heap and returns it. * @return The smallest element from the heap. */ public Object extract(); /** * Returns the smallest element of the heap. * @return The top element of the heap. */ public Object first(); /** * Returns the largest element of the heap. * @return The largest element of the heap. */ public Object last(); /** * Adds the specified object to the heap. * @param o The object to add to the heap. */ public void add(Object o); /** * Returns the size of the heap. * @return The size of the heap. */ public int size(); /** * Returns whether the heap is empty. * @return true if the heap is empty; false otherwise. */ public boolean isEmpty(); /** * Returns an iterator over the elements of the heap. No specific ordering of these * elements is guaranteed. * @return An iterator over the elements of the heap. */ public Iterator iterator(); /** * Clears the contents of the heap. */ public void clear(); }