Чтобы получить элемент по заданному индексу из вершины стека в Java, вы можете использовать следующие методы:
- Использование временного стека: вы можете создать временный стек и извлекать элементы из исходного стека, пока не достигнете желаемого индекса. Затем вы можете получить элемент по этому индексу и вернуть извлеченные элементы обратно в исходный стек.
public static <T> T getElementAt(Stack<T> stack, int index) {
Stack<T> tempStack = new Stack<>();
T element = null;
// Pop elements from the original stack until the desired index
for (int i = 0; i <= index; i++) {
element = stack.pop();
tempStack.push(element);
}
// Retrieve the element at the desired index
element = tempStack.peek();
// Push back the popped elements to the original stack
while (!tempStack.isEmpty()) {
stack.push(tempStack.pop());
}
return element;
}
- Использование списка. Другой подход — преобразовать стек в список, который обеспечивает произвольный доступ к элементам. Затем вы можете получить элемент по нужному индексу.
public static <T> T getElementAt(Stack<T> stack, int index) {
List<T> list = new ArrayList<>(stack);
return list.get(stack.size() - 1 - index);
}
- Использование итерации. Вы также можете использовать итерацию для доступа и извлечения элемента по нужному индексу.
public static <T> T getElementAt(Stack<T> stack, int index) {
Iterator<T> iterator = stack.iterator();
T element = null;
// Iterate until reaching the desired index
for (int i = 0; i <= index; i++) {
if (iterator.hasNext()) {
element = iterator.next();
} else {
throw new IndexOutOfBoundsException("Index out of range");
}
}
return element;
}
Эти методы позволяют получить элемент по заданному индексу с вершины стека в Java. Вы можете выбрать метод, который соответствует вашим требованиям, исходя из таких факторов, как производительность и удобство.