자바에서는 Deque 인터페이스를 통해 양쪽 끝에서 삽입과 삭제를 지원하는 자료구조를 제공한다.
일반적으로 ArrayDeque 또는 LinkedList 클래스가 사용된다.
주요 메서드
- 삽입
- addFirst(E e): 덱의 앞쪽에 요소를 추가
- addLast(E e): 덱의 뒤쪽에 요소를 추가
- offerFirst(E e): 앞쪽에 요소를 추가하며 실패 시 false 반환
- offerLast(E e): 뒤쪽에 요소를 추가하며 실패 시 false 반환
- 삭제
- removeFirst(): 앞쪽에서 요소를 제거
- removeLast(): 뒤쪽에서 요소를 제거
- pollFirst(): 앞쪽에서 제거하며 비어 있으면 null 반환
- pollLast(): 뒤쪽에서 제거하며 비어 있으면 null 반환
- 조회
- getFirst(): 앞쪽 요소를 반환
- getLast(): 뒤쪽 요소를 반환
- peekFirst(): 앞쪽 요소를 반환하며 비어 있으면 null
- peekLast(): 뒤쪽 요소를 반환하며 비어 있으면 null
import java.util.ArrayDeque;
import java.util.Deque;
public class DequeExample {
public static void main(String[] args) {
Deque<String> deque = new ArrayDeque<>();
// 삽입
deque.addFirst("A");
deque.addLast("B");
deque.offerFirst("C");
deque.offerLast("D");
// 조회
System.out.println("앞쪽 요소: " + deque.peekFirst()); // C
System.out.println("뒤쪽 요소: " + deque.peekLast()); // D
// 삭제
deque.removeFirst(); // C 제거
deque.pollLast(); // D 제거
System.out.println("현재 덱: " + deque); // [A, B]
}
}
JavaScript에서의 Deque
JavaScript에는 기본적으로 Deque 자료구조를 제공하지 않지만, 배열(Array)을 사용하여 구현할 수 있다.
Array는 기본적으로 양쪽 끝에서의 삽입과 삭제를 지원한다.
주요 메서드
- 삽입
- push(): 뒤쪽에 요소를 추가
- unshift(): 앞쪽에 요소를 추가
- 삭제
- pop(): 뒤쪽 요소를 제거
- shift(): 앞쪽 요소를 제거
class Deque {
constructor() {
this.items = [];
}
// 삽입
addFirst(item) {
this.items.unshift(item);
}
addLast(item) {
this.items.push(item);
}
// 삭제
removeFirst() {
return this.items.shift();
}
removeLast() {
return this.items.pop();
}
// 조회
peekFirst() {
return this.items[0];
}
peekLast() {
return this.items[this.items.length - 1];
}
// 덱 상태 출력
toString() {
return this.items.join(", ");
}
}
// 사용 예시
const deque = new Deque();
deque.addFirst("A");
deque.addLast("B");
console.log(deque.toString()); // A, B
deque.addFirst("C");
console.log(deque.toString()); // C, A, B
deque.removeLast();
console.log(deque.toString()); // C, A
console.log(deque.peekFirst()); // C
console.log(deque.peekLast()); // A
'기타' 카테고리의 다른 글
Redis의 Sorted Set이 조회 횟수를 저장하는 원리 (검색 순위) (0) | 2025.01.12 |
---|---|
단상 2 (0) | 2025.01.07 |
파이썬 import kafka (six) ModuleNotFoundError 에러 (0) | 2025.01.06 |
쿠키 옵션 (2) | 2024.12.26 |
Materialized Path - 계층적 데이터 표현... (0) | 2024.12.10 |