5.8. Creating a Priority Queue

Problem

You need to prioritize objects: removing higher priority objects from a Collection before lower priority objects.

Solution

Use a PriorityBuffer to hold objects to be prioritized. Objects will be removed from this Buffer according to a priority generated with a Comparator. Whenever the remove( ) method is called on this Buffer implementation, a PriorityBuffer uses the Comparator to sort its contents, returning the element of greatest priority. Using a PriorityBuffer without a Comparator causes the buffer to prioritize objects by natural order, casting each object to Comparable and comparing objects with the compareTo( ) method; all objects must implement the Comparable interface if no Comparator is supplied. The following example demonstrates the use of a PriorityBuffer without supplying a Comparator :

import java.util.*;
import org.apache.commons.collections.Buffer;
import org.apache.commons.collections.buffers.PriorityBuffer;

// Create a PriorityBuffer with no Comparator
Buffer priority = new PriortyBuffer( );
priority.add( new Long( 2 ) );
priority.add( new Long( 1 ) );
priority.add( new Long( 20 ) );
priority.add( new Long( 7 ) );
priority.add( new Long( 18 ) );
priority.add( new Long( 1 ) );

// Print the results in priority order
Iterator priorityIterator = priority.iterator( );
while( priorityIterator.hasNext( ) ) {
    Long value = (Long) priority.next( );
    System.out.prinltn( "Value: " + value );
}

The previous example removes values from ...

Get Jakarta Commons Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.