Javaでスタックのトップから指定されたインデックスの要素を取得する方法


  1. スタックをArrayListとして実装する方法:

    import java.util.ArrayList;
    import java.util.Stack;
    public class StackExample {
       public static void main(String[] args) {
           Stack<Integer> stack = new Stack<>();
           stack.push(10);
           stack.push(20);
           stack.push(30);
           stack.push(40);
           stack.push(50);
           ArrayList<Integer> tempList = new ArrayList<>(stack);
           int index = 2; // 取得したい要素のインデックス
           if (index >= 0 && index < tempList.size()) {
               int element = tempList.get(tempList.size() - 1 - index);
               System.out.println("要素: " + element);
           } else {
               System.out.println("インデックスが無効です。");
           }
       }
    }
  2. スタックをLinkedListとして実装する方法:

    import java.util.LinkedList;
    import java.util.Stack;
    public class StackExample {
       public static void main(String[] args) {
           Stack<Integer> stack = new Stack<>();
           stack.push(10);
           stack.push(20);
           stack.push(30);
           stack.push(40);
           stack.push(50);
           LinkedList<Integer> tempList = new LinkedList<>(stack);
           int index = 2; // 取得したい要素のインデックス
           if (index >= 0 && index < tempList.size()) {
               int element = tempList.get(tempList.size() - 1 - index);
               System.out.println("要素: " + element);
           } else {
               System.out.println("インデックスが無効です。");
           }
       }
    }
  3. スタックを配列として実装する方法:

    import java.util.Arrays;
    import java.util.Stack;
    public class StackExample {
       public static void main(String[] args) {
           Stack<Integer> stack = new Stack<>();
           stack.push(10);
           stack.push(20);
           stack.push(30);
           stack.push(40);
           stack.push(50);
           Integer[] array = stack.toArray(new Integer[0]);
           int index = 2; // 取得したい要素のインデックス
           if (index >= 0 && index < array.length) {
               int element = array[array.length - 1 - index];
               System.out.println("要素: " + element);
           } else {
               System.out.println("インデックスが無効です。");
           }
       }
    }

これらの例では、スタックを異なるデータ構造として実装し、要素を取得するために中間的なリストや配列を使用しています。インデックスが有効な範囲内にあるかどうかを確認し、要素を取得しています。スタックの要素を直接アクセスする方法は提供されていないため、一時的なデータ構造を使用する必要があります。

これらのコード例を参考にして、自身の要件に合わせた方法を選択してください。また、スタックの実装方法や要素のデータ型に応じて、適切なコードの修正が必要な場合があることに留意してください。