Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java Stack(堆棧)

在本教程中,我們將借助示例學(xué)習(xí)Java Stack類及其方法。

Java集合框架具有一個(gè)名為Stack的類,該類提供堆棧數(shù)據(jù)結(jié)構(gòu)的功能。

本Stack類繼承Vector類。

Java Stack類擴(kuò)展了Vector類

堆棧的實(shí)現(xiàn)

在堆棧中,元素以后進(jìn)先出的方式存儲(chǔ)和訪問。也就是說,元素被添加到堆棧的頂部并從堆棧的頂部移除。

堆棧數(shù)據(jù)結(jié)構(gòu)的工作

創(chuàng)建堆棧

為了創(chuàng)建堆棧,我們必須先導(dǎo)入java.util.Stack包。導(dǎo)入包后,就可以使用Java創(chuàng)建堆棧。

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

在此,Type指示堆棧的類型。例如,

//創(chuàng)建整數(shù)類型堆棧
Stack<Integer> stacks = new Stack<>();

//創(chuàng)建字符串類型堆棧
Stack<String> stacks = new Stack<>();

堆棧方法

由于Stack繼承了Vector類,因此它繼承了所有方法Vector。要了解不同的Vector方法,請?jiān)L問Java Vector Class。

除了這些方法之外,Stack類還包括5個(gè)與Vector區(qū)別開來的方法。

push()方法

要將元素添加到堆棧的頂部,我們使用push()方法。例如,

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("Stack: " + animals);
    }
}

輸出結(jié)果

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);

        //刪除堆棧元素,后進(jìn)先出
        String element = animals.pop();
        System.out.println("刪除元素: " + element);
    }
}

輸出結(jié)果

初始堆棧: [Dog, Horse, Cat]
刪除元素: Cat

peek()方法

該peek()方法從堆棧頂部返回一個(gè)對(duì)象。例如,

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("Stack: " + animals);

        //從頂部訪問元素,后進(jìn)先出的原則
        String element = animals.peek();
        System.out.println("頂部元素: " + element);

    }
}

輸出結(jié)果

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

要搜索堆棧中的元素,我們使用search()方法。它從堆棧的頂部返回元素的位置。例如,

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("Stack: " + animals);

        //搜索元素
        int position = animals.search("Horse");
        System.out.println("元素Horse的位置: " + position);
    }
}

輸出結(jié)果

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<>();

        //將元素添加到Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        //檢查堆棧是否為空
        boolean result = animals.empty();
        System.out.println("堆棧是空的嗎? " + result);
    }
}

輸出結(jié)果

Stack: [Dog, Horse, Cat]
堆棧是空的嗎? false

使用ArrayDeque 代替 Stack

本Stack類提供直接執(zhí)行堆棧的數(shù)據(jù)結(jié)構(gòu)。但是,建議不要使用它。而是使用ArrayDeque類(實(shí)現(xiàn)Deque接口)在Java中實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)。

要了解更多信息,請?jiān)L問:Java ArrayDeque

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清