728x90
자바에서 스택(Stack)은 java.util 패키지에 있는 Stack 클래스를 통해 사용할 수 있습니다. 스택은 'Last In, First Out'(LIFO)의 특성을 가진 자료구조로, 가장 마지막에 들어온 요소가 가장 먼저 나가는 구조를 가지고 있습니다.
Stack 클래스의 주요 메소드들:
- E push(E item): 스택의 맨 위에 요소를 추가하고, 그 요소를 반환합니다.
- E pop(): 스택의 맨 위에 있는 요소를 제거하고, 그 요소를 반환합니다. 스택이 비어있는 경우 EmptyStackException을 발생시킵니다.
- E peek(): 스택의 맨 위에 있는 요소를 반환합니다. 스택이 비어있는 경우 EmptyStackException을 발생시킵니다.
- boolean empty(): 스택이 비어있는 경우 true를, 그렇지 않은 경우 false를 반환합니다.
- int search(Object o): 스택에서 주어진 객체의 위치를 반환합니다. 스택의 맨 위부터 아래로 찾으며, 맨 위의 위치는 1입니다. 주어진 객체가 스택에 없는 경우 -1을 반환합니다.
다음은 Java에서의 Linked List를 생성하고 사용하는 기본적인 예시입니다:
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 요소 추가
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack); // 출력: [1, 2, 3]
// 요소 제거
int popped = stack.pop();
System.out.println(popped); // 출력: 3
System.out.println(stack); // 출력: [1, 2]
// 요소 확인
int peeked = stack.peek();
System.out.println(peeked); // 출력: 2
System.out.println(stack); // 출력: [1, 2]
// 요소 검색
int position = stack.search(1);
System.out.println(position); // 출력: 2
}
}
이 예제에서는 Stack 클래스의 주요 메소드들을 사용하여 스택에 요소를 추가하거나 제거하고, 특정 요소를 확인하거나 검색하는 방법을 보여주고 있습니다.
스택은 다양한 알고리즘에서 활용됩니다. 예를 들어, 깊이 우선 탐색(DFS), 백트래킹, 문자열 역순 출력 등에서 스택을 사용할 수 있습니다. 또한, 함수의 호출 스택을 관리하는 데에도 사용됩니다.
간단하게 문자열을 역순으로 출력하는 예시입니다:
import java.util.Arrays;
import java.util.Stack;
public class test {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("A");
stack.push("B");
stack.push("C");
stack.push("D");
String[] list = new String[stack.size()];
for(int i = 0; i < list.length; i++) list[i] = stack.pop();
System.out.println(Arrays.toString(list));
}
}
728x90
'Java > Data Structure(Java)' 카테고리의 다른 글
Java에서의 해시(Hash) 활용 (1) | 2023.12.07 |
---|---|
Java에서의 트리(Tree) 활용 (0) | 2023.12.06 |
Java에서의 큐(Queue) 활용 (1) | 2023.12.06 |
Java에서의 연결 리스트(LinkedList) 활용 (0) | 2023.12.06 |
Java에서의 동적 배열(ArrayList) 활용 (0) | 2023.12.05 |