번역
서론
안녕하세요, 미래의 자바 개발자 여러분! 오늘은 자바 스택 클래스의 흥미로운 세계에 빠지기 위해 준비되었습니다. 코드를 한 줄도 작성한 적이 없다고 해도 걱정하지 마세요 – 여러분의 친절한 가이드로서 저는 이 흥미로운 여행을 동반하겠습니다.
책을 정리하는 것을 상상해보세요. 그들을 쌓아 올리며, 한 권씩 위에 올려줍니다. 마지막에 올린 책은 필요할 때 가장 먼저 꺼낼 책입니다. 자바에서 스택이 어떻게 작동하는지는 정확히 이렇습니다! 그것은 "마지막으로 들어간 것을 가장 먼저 꺼냄"이라는 (LIFO) 데이터 구조이며, 프로그래밍에서 매우 유용합니다.
클래스 선언
기본 사항부터 시작해보겠습니다. 자바에서 스택 클래스는 java.util 패키지의 일부입니다. 사용하려면 다음과 같이 임포트해야 합니다:
import java.util.Stack;
스택 클래스는 벡터 클래스를 확장하고, List, Collection, Iterable, Cloneable,Serializable과 같은 인터페이스를 구현합니다. 이러한 용어들이 현재 외계어 같아 보이는 것은 걱정하지 마세요 – 저희는 이제부터 알아보겠습니다!
클래스 생성자
스택 클래스는 하나의 생성자만 가지고 있습니다:
Stack<E> stack = new Stack<E>();
여기서 'E'는 여러분이 스택에 저장하고 싶은 요소의 형식에 대한 자리 표시자입니다. Integer, String 또는 다른任何 객체 형식일 수 있습니다. 예를 들어:
Stack<Integer> numberStack = new Stack<Integer>();
Stack<String> bookStack = new Stack<String>();
첫 번째 줄에서는 정수를 담을 스택을 만들고, 두 번째 줄에서는 문자열을 담는 스택을 만들고 있습니다 – 우리의 책 쌓기 비유는 완벽합니다!
클래스 메소드
이제 스택 클래스의 주요 메소드를 살펴보겠습니다. 쉽게 참조할 수 있도록 표로 제공하겠습니다:
메소드 | 설명 |
---|---|
push(E item) | 스택의顶部에 아이템을 추가합니다 |
pop() | 顶部의 아이템을 제거하고 반환합니다 |
peek() | 제거하지 않고顶部의 아이템을 반환합니다 |
empty() | 스택이 비어 있는지 확인합니다 |
search(Object o) | 객체를 검색하고 그 위치를 반환합니다 |
이제 예제를 통해 이들을 설명해보겠습니다:
push(E item)
Stack<String> bookStack = new Stack<String>();
bookStack.push("Java for Beginners");
bookStack.push("Data Structures in Java");
여기서는 책을 우리의 스택에 추가하고 있습니다. "Data Structures in Java"는 이제 "Java for Beginners"의顶部에 있습니다.
pop()
String topBook = bookStack.pop();
System.out.println("Removed book: " + topBook);
이 코드는 "Data Structures in Java"를 스택의顶部에서 제거하고 반환합니다.
peek()
String nextBook = bookStack.peek();
System.out.println("Next book to read: " + nextBook);
이 코드는 제거하지 않고顶部의 책을 알려줍니다 – 이 경우 "Java for Beginners"입니다.
empty()
if (bookStack.empty()) {
System.out.println("No more books to read!");
} else {
System.out.println("You still have books to read!");
}
이 코드는 우리의 스택이 비어 있는지 확인합니다. 모든 책을 다 읽었는지 확인하는 것과 같습니다!
search(Object o)
int position = bookStack.search("Java for Beginners");
if (position != -1) {
System.out.println("Book found at position: " + position);
} else {
System.out.println("Book not found in the stack.");
}
이 코드는 우리의 스택에서 책을 검색합니다. 위치는顶部에서 시작하여 세는 것을 기억하세요,顶部의 아이템은 위치 1입니다.
상속된 메소드
스택 클래스는 부모 클래스 벡터와 구현한 인터페이스에서 상속된 메소드를 가지고 있습니다. 유용한 상속된 메소드에는 다음이 있습니다:
- size(): 스택에 있는 요소의 수를 반환합니다
- contains(Object o): 객체가 스택에 있는지 확인합니다
- clear(): 스택의 모든 요소를 제거합니다
예제
재미있는 예제를 통해 모든 것을 통합해보겠습니다. 팬케이크 스택을 관리하는 것을 상상해보세요!
import java.util.Stack;
public class PancakeStack {
public static void main(String[] args) {
Stack<String> pancakes = new Stack<>();
// 팬케이크 만들기
pancakes.push("Plain");
pancakes.push("Blueberry");
pancakes.push("Chocolate Chip");
System.out.println("Pancake stack: " + pancakes);
//顶部의 팬케이크 먹기
String eatenPancake = pancakes.pop();
System.out.println("Yum! Just ate a " + eatenPancake + " pancake.");
// 다음 팬케이크 확인
System.out.println("Next pancake is: " + pancakes.peek());
// 더 많은 팬케이크 추가
pancakes.push("Banana");
// 스택 크기 확인
System.out.println("Number of pancakes left: " + pancakes.size());
// 팬케이크 검색
int position = pancakes.search("Plain");
if (position != -1) {
System.out.println("Plain pancake is " + position + " from the top.");
} else {
System.out.println("No plain pancakes left!");
}
}
}
출력
이 코드를 실행하면 다음과 같은 출력이 나옵니다:
Pancake stack: [Plain, Blueberry, Chocolate Chip]
Yum! Just ate a Chocolate Chip pancake.
Next pancake is: Blueberry
Number of pancakes left: 3
Plain pancake is 3 from the top.
그리고 이렇게 끝납니다! 여러분은 자바 스택 클래스의 기본 사항을 배웠습니다. 팬케이크나 책을 쌓는 것처럼, 자바의 스택은 "마지막으로 들어간 것을 가장 먼저 꺼냄"이라는 원칙을 따릅니다. 그것은 많은 프로그래밍 시나리오에서 유용한 강력한 도구입니다.
계속 연습하다가, 데이터를 전문가처럼 쌓고 내려놓을 수 있을 것입니다! 코딩을 즐겁게, 여러분의 스택이 항상 맛있는 팬케이크... 아니, 유용한 데이터로 가득 차길 바랍니다!
Credits: Image by storyset