산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java Stack 클래스 완벽 가이드: 사용법과 핵심 메서드

Java Stack 클래스

Java 컬렉션 프레임워크에는 클래식 스택 자료구조를 구현한 Stack 클래스가 포함되어 있습니다. 공식 Java 문서에 따르면 Stack은 Vector를 상속받아 모든 메서드를 물려받으면서 스택 전용 연산을 추가합니다.


Stack 구현 원리

스택은 후입선출(LIFO, Last In First Out) 원칙을 따릅니다: 요소는 상단에 푸시(push)되고 상단에서 팝(pop)됩니다. 다음 다이어그램이 이 동작을 보여줍니다.


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("Initial Stack: " + animals);
        String removed = animals.pop();
        System.out.println("Removed Element: " + removed);
    }
}

출력

Initial Stack: [Dog, Horse, Cat] Removed Element: 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("Element at top: " + top);
    }
}

출력

Stack: [Dog, Horse, Cat] Element at top: 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("Position of Horse: " + pos);
    }
}

출력

Stack: [Dog, Horse, Cat] Position of 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("Is the stack empty? " + isEmpty);
    }
}

출력

Stack: [Dog, Horse, Cat] Is the stack empty? false

Stack 대신 ArrayDeque 사용하기

Stack은 스택을 구현하지만 레거시로 간주됩니다. 최신 Java 코드는 Deque 인터페이스를 구현한 ArrayDeque를 스택 기능으로 선호하는데, 더 나은 성능과 명확한 의미론을 제공하기 때문입니다. 자세한 내용은:

java

  1. Java final 키워드 마스터: 변수, 메서드, 클래스에서의 활용
  2. Java instanceof 연산자 완벽 가이드: 기본 사용법부터 상속, 인터페이스까지
  3. Java 상속 마스터: 개념, 종류, 실전 예제 총정리
  4. Java 정적 중첩 클래스 이해: 용법, 내부 클래스와의 차이, 예제
  5. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  6. Java 싱글톤 패턴 완벽 가이드: 안전하게 구현하고 사용하기
  7. Java 리플렉션 마스터: 런타임에 클래스, 메서드, 필드 검사 및 조작
  8. Java ObjectOutputStream 마스터하기: 직렬화, 메서드, 실전 예제
  9. Java 제네릭 마스터하기: 재사용 가능하고 타입 안전한 코드 작성
  10. java.io로 Java 파일 작업 마스터하기 – 생성, 읽기, 쓰기 및 삭제