English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java プロセス制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 例外処理

Java リスト(List)

Java Queue(キュー)

Java Mapコレクション

Java Setコレクション

Java 入出力(I/O)

Java Reader/Writer

Java 他のトピック

Java Stack(スタック)

このチュートリアルでは、サンプルを使用してJava Stackクラスおよびそのメソッドを学びます。

Javaコレクションフレームワークには、Stackと呼ばれるクラスがあり、スタックデータ構造の機能を提供しています。

このStackクラスはVectorクラスを継承しています。

スタックの実装

スタックでは、要素は後入れ先出しの方法でデータを保存し、アクセスします。つまり、要素はスタックの先頭に追加され、先頭から削除されます。

スタックの作成

スタックを作成するために、まずjava.util.Stackパッケージをインポートする必要があります。パッケージをインポートすると、Javaでスタックを作成できます。

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

在此,Type指示堆栈的类型。例如,

//创建整数类型堆栈
Stack<Integer> stacks = new Stack<>();
//创建字符串类型堆栈
Stack<String> stacks = new Stack<>();

堆栈方法

由于Stack继承了Vector类,因此它继承了所有方法Vector。要了解不同的Vector方法,请访问Java Vector Class

除了这些方法之外,Stack类还包括5个与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<>();
        //将元素添加到 Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("初始堆栈: " ); + animals);
        //删除堆栈元素,后进先出
        String element = animals.pop();
        System.out.println("删除元素: " ); + element);
    }
}

出力結果

初始堆栈: [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 element = animals.peek();
        System.out.println("顶部元素: " ); + element);
    }
}

出力結果

Stack: [Dog, Horse, Cat]
顶部元素: Cat

要搜索堆栈中的元素,我们使用search()方法。它从堆栈的顶部返回元素的位置。例如,

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 position = animals.search("Horse");
        System.out.println("元素Horse的位置: " ); + position);
    }
}

出力結果

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 result = animals.empty();
        System.out.println("スタックは空ですか? " + result);
    }
}

出力結果

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

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

このStackクラスは、直接スタックデータ構造を実行するデータ構造を提供します。ただし、使用することはお勧めしません。代わりに、Javaでスタックデータ構造を実現するためにDequeインターフェースを実装するArrayDequeクラスを使用してください。

さらに詳しい情報については、以下のURLにアクセスしてください:Java ArrayDeque