В прошлую пятницу у меня была дискуссия с одним из моих товарищей по команде, который задает мне вопрос, который мы можем пройти в порядке в порядке (первая в первом выходе). Затем я говорю, что Стек сам поддерживает в нем порядок LIFO, но мы можем пересечь его по манеру, используя другой стек или список. Затем мы задаем тот же вопрос с Chatgpt. Я буду обсуждать одно из решения, которые мне дает. В стеке мы можем вызвать метод итератор (), который возвращает итератор в стеке. И когда мы перечислим, я ожидал, что ответ будет в LIFO ORDER, но фактический ответ будет отображаться на IDE - это FIFO, что заставляет меня удивлять. Это проблема реализации со стороны Java или Oracle? Или это намеренно?Stack stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
System.out.println("Iterating using Stack's iterator (LIFO order):");
Iterator iterator = stack.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
< /code>
Использование метода POP: < /p>
Stack stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
System.out.println("Iterating using Stack's pop method");
while (stack.size()>0) {
System.out.println(stack.pop());
}
< /code>
После исследования и разработки я понимаю, что метод итератора () принадлежит вектору, который унаследовал стек. Таким образом, это реализация поступила от Vector, а не из стека. Java говорит, что это стек, следуя Lifo Order, а с другой стороны, мы можем пройти его в порядке. Метод итератора () должен быть переопределен в стеке по умолчанию, и не должно быть никакого способа пройти стек по порядку FIFO внутри Java. Пожалуйста, объясните свою мысль по этому вопросу. Я не говорю, что Ява неверна. Я просто хочу знать, что текущее поведение стека в порядке, или может быть улучшение?
Подробнее здесь: https://stackoverflow.com/questions/796 ... stom-logic