PriorityQueue的size()之見鬼(神手題)

import java.util.*;

public class NewMain {

public static void main(String[] args) {

PriorityQueue pq=new PriorityQueue();

pq.add("carrot");

pq.add("c");

pq.add("b");

pq.add("a");

pq.add("banana");

System.out.println(pq.size());

System.out.println(pq);

for(int x=0;x< pq.size();x++){//將pq.size();改成數值5結果不一樣了

System.out.print(pq.poll()+" ");

}

System.out.print("\n"+pq);

}

}

抱歉請問將pq.size();改成數值5結果不一樣了@@?

為什麼???pq.size();不就是等於5嗎@@?

這....這....難道....酸~~~

拜託各大神手了....

已更新項目:

另外小弟在JavaWord的另一個問題在麻煩您神人解救~

http://www.javaworld.com.tw/jute/post/view?bid=29&...

2 個已更新項目:

感謝大大~

另一題javaworld這題優先序~比較難理解

希望大大您能救救小弟了~

再下感激萬分~

3 個已更新項目:

Iterator iterator=pq.iterator();

while(iterator.hasNext())

System.out.print(iterator.next()+" ,");

可是它變成沒有排序了不是嗎@@?

JAVAWORD上的神手題還請您仙人指教了~

感激不盡~

拜託您了....

1 個解答

評分
  • 1 0 年前
    最佳解答

    poll這個method的功用是Retrieves and removes the head of this queue

    pq.poll() 後size會縮小

    x的變化 0 1 2

    pq.sieze 5 4 3

    所以只會跑三次

    可以改成

    while(pq.size()>0)

    System.out.print(pq.poll()+" ");

    或是用iterator

    Iterator iterator=pq.iterator();

    while(iterator.hasNext())

    System.out.print(iterator.next()+" ,");

    前後者的差別在於前者迴圈跑完pq裡面的東西被跟著清空而後者沒有

    和排序不同

    2010-04-08 17:47:51 補充:

    另一提有人解了還需?

    2010-04-09 01:03:05 補充:

    是沒有排序

    我的意思是印出來會不一樣

還有問題?馬上發問,尋求解答。