Java Stack: как получить элемент по заданному индексу сверху

Чтобы получить элемент по заданному индексу из вершины стека в Java, вы можете использовать следующие методы:

  1. Использование временного стека: вы можете создать временный стек и извлекать элементы из исходного стека, пока не достигнете желаемого индекса. Затем вы можете получить элемент по этому индексу и вернуть извлеченные элементы обратно в исходный стек.
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;
}
  1. Использование списка. Другой подход — преобразовать стек в список, который обеспечивает произвольный доступ к элементам. Затем вы можете получить элемент по нужному индексу.
public static <T> T getElementAt(Stack<T> stack, int index) {
    List<T> list = new ArrayList<>(stack);
    return list.get(stack.size() - 1 - index);
}
  1. Использование итерации. Вы также можете использовать итерацию для доступа и извлечения элемента по нужному индексу.
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. Вы можете выбрать метод, который соответствует вашим требованиям, исходя из таких факторов, как производительность и удобство.