2011-07-09 74 views
0

我有下面的代碼。ArrayDeque大小和內容

int clock; 
    ArrayDeque<Integer> q = new ArrayDeque<Integer>(); 
    int customer = 1; 
    Random r = new Random(); 

    for (clock = 0; clock <= 99; clock++) { 
     q.add(customer); 
     customer++; 
    } 

基於我知道到目前爲止,它應該給我一個名單,或者在這種情況下,雙端隊列,大小爲100與100級的客戶。

當我打印尺寸它驗證我的理論,但是當我打印內容時,它只返回索引0-49。

for (int i = 0; i < q.size() ; i++) { 
     System.out.println("index "+ i + " "+ q.remove()); 
    } 

是否打印arraydeque與打印其他arraylist不同?

回答

3

問題是,你比較q.size(),每次迭代減少。這是因爲remove()實際上修改了隊列。

可以打印元素,而無需使用迭代修改隊列:

int i = 0; 
for (int elem : q) { 
    System.out.println("index "+ i++ + " "+ elem); 
} 
當然
+0

!這仍然是新的。謝謝 – fernan