Есть реализация очереди на основе двух стеков, использую два цикла, первый перекладывает элементы из одного стека в другой, пока не дойдет до последнего, его запоминает, удаляет и возвращает, затем элементы перекладываются обратно для дальнейших операций.
Как сделать, чтобы в методе poll был один цикл?
public class SimpleQueue<T> {
int count = 0;
private final SimpleStack<T> in = new SimpleStack<>();
private final SimpleStack<T> out = new SimpleStack<>();
/*
* Метод poll() - должен возвращать первое значение и удалять его из коллекции.
*/
public T poll() {
for (int i = 0; i < count - 1; i++) {
in.push(out.pop());
}
count--;
T rsl = out.pop();
for (int i = 0; i < count; i++) {
out.push(in.pop());
}
return rsl;
}