PriorityQueue クラス

import java.io.*;
import java.util.*;

class Comp implements Comparator <Integer> {
	public int compare (Integer arg1, Integer arg2)
	{
		int k1, k2, sw = 0;
		k1 = arg1.intValue();
		k2 = arg2.intValue();
		if (k1 < k2)
			sw = 1;
		else if (k1 == k2)
			sw = 0;
		else
			sw = -1;
		return sw;
	}
}

public class Test
{
	public static void main (String[] args)
	{
		int i1, k;
		boolean sw;
					// コンパレータを使用しない場合(昇順)
		PriorityQueue <Integer> data1 = new PriorityQueue <Integer> ();
		for (i1 = 0; i1 < 5; i1++)
			data1.add(new Integer(i1));
		for (i1 = 0; i1 < 5; i1++) {
			k = data1.poll().intValue();
			System.out.printf("%d ", k);
		}
		System.out.println();
					// コンパレータを使用する場合(降順)
		Comparator<Integer> cp = new Comp();
		PriorityQueue <Integer> data2 = new PriorityQueue <Integer> (1, cp);
		for (i1 = 0; i1 < 5; i1++)
			data2.add(new Integer(i1));
		for (i1 = 0; i1 < 5; i1++) {
			k = data2.poll().intValue();
			System.out.printf("%d ", k);
		}
		System.out.println();
	}
}
		
(出力)
0 1 2 3 4
4 3 2 1 0