首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于PriorityQueue的排序,该如何处理

2012-01-24 
关于PriorityQueue的排序importjava.util.*classMouseimplementsComparable{privateintiMouse(inti){thi

关于PriorityQueue的排序
import   java.util.*;

class   Mouse   implements   Comparable
{
private   int   i;
Mouse(int   i){
this.i=i;
}
public   String   toString(){return   "Mouse   "+i;}
public   int   compareTo(Object   o){
assert   ((o!=null)&&(o   instanceof   Mouse));
return   new   Integer(i).compareTo(((Mouse)o).i);
}
}
public   class   TestQueue
{
public   static   void   main(String[]   args)
{
Queue <Mouse>   queue=new   PriorityQueue <Mouse> ();
for(int   i=5;i> -1;i--)queue.add(new   Mouse(i));
System.out.println(queue);
                    }
}
在我的及其打印的不是   Mouse   0,1,2,3,4,5,但我觉的应该是这样打印的啊

[解决办法]
直接println(queue)得到的是String representation of the queue,是没有排序的。

如果你要看queue的序列,
1,用queue.poll()一个一个列出来看,
2,用Iterator来看,

就是0,1,2,3,4,5了。
[解决办法]
import java.util.*;

class Mouse implements Comparable
{
private int i;
Mouse(int i){
this.i=i;
}
public String toString(){return "Mouse "+i;}
public int compareTo(Object o){
assert ((o!=null)&&(o instanceof Mouse));
return new Integer(i).compareTo(((Mouse)o).i);
}
}
public class TestQueue
{
public static void main(String[] args)
{
Queue <Mouse> queue=new PriorityQueue <Mouse> ();
for(int i=5;i> -1;i--)queue.add(new Mouse(i));

Iterator iter = queue.iterator();
while (iter.hasNext())
System.out.println(iter.next());

for(int i=5;i> -1;i--)
System.out.println(queue.poll());
}
}
[解决办法]
D:\Testing> java TestQueue
Mouse 0
Mouse 2
Mouse 1
Mouse 5
Mouse 3
Mouse 4
Mouse 0
Mouse 1
Mouse 2
Mouse 3
Mouse 4
Mouse 5

热点排行