Java 컬렉션 프레임워크의 일부로, 정렬된 순서로 요소를 저장하는 데이터 구조입니다. TreeSet은 중복 요소를 허용하지 않으며, 요소를 추가하거나 제거하면 자동으로 정렬됩니다.
- 요소의 정렬된 순서 유지
- 중복 요소 허용하지 않음
- 검색, 삽입, 삭제 등의 연산을 빠르게 수행
- 이진 검색 트리 및 레드-블랙 트리를 내부적으로 사용
- TreeSet은 데이터를 정렬된 순서로 유지해야 할 때 유용하게 사용될 수 있습니다. 예를 들어, 정수, 문자열, 날짜 등을 정렬된 순서로 관리해야 할 때 TreeSet을 사용할 수 있습니다.
스택은
후입선출(LIFO, Last-In-First-Out)
의 원리를 따릅니다. 즉, 가장 최근에 삽입된 요소가 가장 먼저 제거됩니다. 스택은 주로 "push"와 "pop"이라는 두 가지 주요 연산을 제공합니다. "push"는 스택의 맨 위에 요소를 삽입하고, "pop"은 스택의 맨 위에 있는 요소를 제거합니다. 스택은 주로 재귀 함수 호출, 수식의 괄호 검사, 뒤로 가기 기능 등에 사용됩니다.
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// 스택에 요소 추가
stack.push("사과");
stack.push("바나나");
stack.push("딸기");
// 스택에서 요소 제거
String fruit = stack.pop();
System.out.println("스택에서 꺼낸 과일: " + fruit);
// 스택 맨 위 요소 확인
String topElement = stack.peek();
System.out.println("스택 맨 위의 요소: " + topElement);
// 스택이 비어 있는지 확인
boolean isEmpty = stack.isEmpty();
System.out.println("스택이 비어 있는지 확인: " + isEmpty);
}
}
큐는
선입선출(FIFO, First-In-First-Out)
의 원리를 따릅니다. 즉, 가장 먼저 삽입된 요소가 가장 먼저 제거됩니다. 큐는 주로 "enqueue"와 "dequeue"라는 두 가지 주요 연산을 제공합니다. "enqueue"는 큐의 뒤쪽에 요소를 삽입하고, "dequeue"는 큐의 앞쪽에 있는 요소를 제거합니다. 큐는 주로 작업 대기열, 버퍼, 너비 우선 탐색 등에 사용됩니다.
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 큐에 요소 추가
queue.add("사과");
queue.add("바나나");
queue.add("딸기");
// 큐에서 요소 제거
String fruit = queue.remove();
System.out.println("큐에서 꺼낸 과일: " + fruit);
// 큐 맨 앞 요소 확인
String frontElement = queue.peek();
System.out.println("큐 맨 앞의 요소: " + frontElement);
// 큐가 비어 있는지 확인
boolean isEmpty = queue.isEmpty();
System.out.println("큐가 비어 있는지 확인: " + isEmpty);
}
}