當使用Java的for
每種語法時,Stack
不使用輸出元素上的LIFO排序。請看下面的代碼:堆棧,foreach,錯誤的順序?
import java.util.Queue;
import java.util.Stack;
import java.util.LinkedList;
public class QueueStackTest {
private static int[] numbers = {1, 2, 3, 4, 5};
public static void main(String[] args) {
Stack<Integer> s = new Stack<Integer>();
Queue<Integer> l = new LinkedList<Integer>();
for (int i : numbers) {
s.push(i);
l.offer(i);
}
System.out.println("Stack: ");
for(Integer i : s) {
System.out.println(i);
}
System.out.println();
System.out.println("Queue:");
for(Integer i : l) {
System.out.println(i);
}
}
}
輸出:
Stack:
1
2
3
4
5
Queue:
1
2
3
4
5
問題:
- 這是否有道理?這是一個錯誤嗎?
- 我能保證這至少會以正確的順序返回隊列元素嗎?
- 消費(處理)
Stack
或Queue
時,這是最好的方法嗎?或者我應該做更多的手動迴路的東西,如:while(!s.isEmpty()) { handle(s.pop()); }
或while(!l.isEmpty()) { handle(l.poll()); }
您是否嘗試過使用正常循環? – 2013-02-15 18:10:17