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<>();
        //요소를 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<>();
        //요소를 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<>();
        //요소를 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<>();
        //요소를 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 클래스는 직접 스택 데이터 구조를 실행하는 데이터 구조를 제공합니다. 그러나 ArrayDeque 클래스(Deque 인터페이스를 구현)를 사용하여 Java에서 스택 데이터 구조를 구현하는 것이 좋습니다.

더 많은 정보를 얻으려면 방문하세요:Java ArrayDeque