001package cnslab.cnsnetwork; 002import cnslab.cnsmath.*; 003import java.util.Map; 004import java.util.TreeSet; 005import java.util.Iterator; 006import java.util.Arrays; 007import java.util.PriorityQueue; 008import java.io.PrintStream; 009/** 010 * Implement the java provided priority queue 011 * 012 * @author Yi Dong 013 */ 014public class PriQueue<T extends Comparable<T> > implements Queue<T> 015{ 016 private PriorityQueue<T> treeQueue = new PriorityQueue<T>(); 017 018 /** 019 * @see cnslab.cnsnetwork.Queue#deleteItem(java.lang.Comparable) deleteItem 020 */ 021 public synchronized void deleteItem(T item) { 022 023 if(item.compareTo( treeQueue.peek())!=0) throw new RuntimeException("delete non fist item (input):"+item+" first item"+treeQueue.peek()); 024 treeQueue.poll(); 025 } 026 027 /** 028 * @see cnslab.cnsnetwork.Queue#insertItem(java.lang.Comparable) insertItem 029 */ 030 public synchronized void insertItem(T item) { 031 treeQueue.add(item); 032 } 033 034 035 /** 036 * @see cnslab.cnsnetwork.Queue#firstItem() firstItem 037 */ 038 public synchronized T firstItem() { 039 return treeQueue.peek(); 040 } 041 042 /** 043 * show all the elements in the Queue in order 044 */ 045 public synchronized void show(PrintStream p) { 046 Iterator<T> iter= treeQueue.iterator(); 047 while(iter.hasNext()) 048 { 049 p.println(iter.next()); 050 } 051 } 052 053 public synchronized String show() { 054 String out=""; 055 Iterator<T> iter= treeQueue.iterator(); 056 out=out+"<"; 057 while(iter.hasNext()) 058 { 059 out=out+iter.next(); 060 } 061 out=out+">"; 062 return out; 063 } 064 065 public synchronized void clear(){ 066 treeQueue.clear(); 067 } 068}