各構文で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()); }
通常のforループを使用してみましたか? –