Сегодня я пытался вставить класс java.util.Stack
, а затем использовать Iterator
для итерации (без использования pop) через элементы. Я ожидал собственности LIFO, но удивился.
Вот код, который я пытался.
import java.util.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
RobStack<Integer> rstack = new RobStack<Integer>(); // Correct Implementation
Stack<Integer> jstack = new Stack<Integer>(); // Default Java Implementation
rstack.push(0); jstack.push(0);
rstack.push(1); jstack.push(1);
rstack.push(2); jstack.push(2);
rstack.push(3); jstack.push(3);
System.out.print("Algo Stack: ");
for (int i : rstack)
System.out.print(i + " ");
System.out.print("\nJava Stack: ");
for (int i : jstack)
System.out.print(i + " ");
}
}
Вывод указанной выше программы приведен ниже:
Algo Stack: 3 2 1 0
Java Stack: 0 1 2 3
В приведенном выше коде jstack
используется реализация Java по умолчанию, а rstack
использует реализацию предоставленную Робертом Седжуиком для его класса алгоритмов. Я обнаружил, что реализация Роберта Роберта работает нормально, но реализация java.util.Stack
не выполняется.
Является ли это ошибкой или это дизайн?