工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java Stackクラス完全ガイド:使い方と主要メソッド

Java Stackクラス

Javaコレクションフレームワークには、クラシックなスタックデータ構造を実装したStackクラスが含まれています。公式Javaドキュメントによると、StackはVectorを継承しており、そのすべてのメソッドを継承しつつ、スタック固有の操作を追加しています。


Stackの実装

スタックは後入れ先出し(LIFO:Last In, First Out)の原則に従います:要素はトップにプッシュされ、トップからポップされます。以下の図はこの動作を示しています。

Java Stackクラス完全ガイド:使い方と主要メソッド


Stackの作成

スタックを作成するには、java.util.Stackをインポートし、目的のジェネリック型でインスタンス化します:

Stack<Type> stack = new Stack<>();

例:

// Integer型のスタック
Stack<Integer> intStack = new Stack<>();
// String型のスタック
Stack<String> stringStack = new Stack<>();

Stackのメソッド

継承されたVectorメソッドに加え、Stackは汎用コレクションとは異なる5つの専用操作を提供します。Vectorメソッドの完全なリストはVectorクラスのドキュメントを参照してください。


push()メソッド

push()メソッドは要素をスタックのトップに追加します。

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animals = new Stack<>();
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);
    }
}

出力

Stack: [Dog, Horse, Cat]

pop()メソッド

pop()メソッドはスタックのトップにある要素を削除して返します。

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animals = new Stack<>();
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("初期Stack: " + animals);
        String removed = animals.pop();
        System.out.println("削除された要素: " + removed);
    }
}

出力

初期Stack: [Dog, Horse, Cat]
削除された要素: Cat

peek()メソッド

peek()メソッドは要素を削除せずにトップの要素を取得します。

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animals = new Stack<>();
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);
        String top = animals.peek();
        System.out.println("トップの要素: " + top);
    }
}

出力

Stack: [Dog, Horse, Cat]
トップの要素: Cat

search()メソッドは、スタックのトップからの1ベースの位置を返し、存在しない場合は-1を返します。

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animals = new Stack<>();
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);
        int pos = animals.search("Horse");
        System.out.println("Horseの位置: " + pos);
    }
}

出力

Stack: [Dog, Horse, Cat]
Horseの位置: 2

empty()メソッド

empty()メソッドはスタックに要素があるかどうかを確認します。

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animals = new Stack<>();
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);
        boolean isEmpty = animals.empty();
        System.out.println("スタックは空ですか? " + isEmpty);
    }
}

出力

Stack: [Dog, Horse, Cat]
スタックは空ですか? false

Stackの代わりにArrayDequeを使用する

Stackはスタックを実装していますが、レガシーと見なされています。モダンなJavaコードでは、スタック機能のためにDequeインターフェースを実装するArrayDequeを推奨します。これはより良いパフォーマンスと明確なセマンティクスを提供するためです。詳細は以下を参照してください:

Java

  1. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  2. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  3. Java継承のマスター:概念、種類、実践例
  4. Java Staticネストクラスの理解:用法、違い、実例
  5. Java無名インナークラス完全ガイド:定義、構文、実践例
  6. Javaシングルトンパターン完全解説:安全な実装と活用法
  7. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  8. Java ArrayList完全マスター:操作・メソッド・ベストプラクティス
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除