Как известно, стек представляет собой структуру данных, которая следует за порядком LIFO. И согласно моему стеку знаний позволяет получить доступ только к верхнему элементу. Но в Java мы можем использовать итератор со стеклом, который каким-то образом противоречит вышеуказанной идее разрешить доступ только к верхнему элементу.Как оправдано использование итератора со стек в Java
Пример кода
Stack<Integer> s=new Stack<Integer>();
s.push(10);
s.push(20);
s.push(30);
------------------------------------------------------------------------
Iterator<Integer> itr=s.iterator();
while(itr.hasNext())
{
System.out.print(itr.next() + " "); // ouput:- 10 20 30
}
Теперь у меня есть итератор на стек, который может пересекать стек в порядке их поступления, и я даже могу удалить любой элемент, используя itr.remove()
Это очень запутанным :)
Пожалуйста, объясните ...
PS: В случае, если я использую ListIterator на месте O f iterator, тогда это еще более запутанно, потому что предыдущий предоставляет больше методов.
«Только верхний элемент» определенно ошибочен. Стеки обычно позволяют вам обращаться к элементам по отношению к вершине: top-1, top-2 и т. Д. Итератор просто позволяет вам пройти через все элементы таким же образом. – markspace
Возможно, вам следует избегать использования стека, поскольку он поддерживает вектор, где очень метод является потокобезопасным. – SMA
это немного противоречит «чистому» теоретическому стеку, и в большинстве случаев вы не будете использовать его (кроме печати и отладки вашего стека), но это удобно :) Вы можете определить определение стека как «он имеет push, pop, top ', в отличие от' он имеет ТОЛЬКО push, pop, top ' – okaram