728x90
반응형
- Java 언어로
SnailQueue
라는 큐를 구현할 수 있습니다. - 일반적인 큐와 달리 "Snail Queue"는 데이터를
삽입
할 때는 큐의맨 뒤
에 추가하지만, - 특정 조건에서
중간
위치의 데이터를제거
하거나 순서에 변화를 줄 수 있습니다. - 이를 통해 기존 큐의 기능을 응용한 다양한 동작을 구현할 수 있습니다.
- 다음은
SnailQueue
의 기본적인 예제 코드입니다.
import java.util.LinkedList;
import java.util.Queue;
public class SnailQueue<T> {
private Queue<T> queue;
public SnailQueue() {
queue = new LinkedList<>();
}
// 큐에 데이터 추가
public void enqueue(T data) {
queue.add(data);
}
// 큐에서 맨 앞의 데이터 제거
public T dequeue() {
return queue.poll();
}
// 특정 조건에서 데이터 제거 예시 (중간 위치의 데이터를 제거)
public boolean removeIfMiddle() {
if (queue.size() > 2) {
// 큐를 리스트로 변환하여 중간 요소 제거
LinkedList<T> tempList = new LinkedList<>(queue);
tempList.remove(queue.size() / 2); // 중간 요소 제거
queue = new LinkedList<>(tempList); // 큐 업데이트
return true;
}
return false;
}
// 큐에 있는 모든 요소 출력
public void printQueue() {
System.out.println(queue);
}
public static void main(String[] args) {
SnailQueue<Integer> snailQueue = new SnailQueue<>();
snailQueue.enqueue(1);
snailQueue.enqueue(2);
snailQueue.enqueue(3);
snailQueue.enqueue(4);
snailQueue.enqueue(5);
snailQueue.printQueue(); // [1, 2, 3, 4, 5]
snailQueue.removeIfMiddle();
snailQueue.printQueue(); // 중간 요소 제거 후 출력 예: [1, 2, 4, 5]
snailQueue.dequeue();
snailQueue.printQueue(); // [2, 4, 5]
}
}
위 코드에서는 removeIfMiddle
메서드를 통해 큐의 중간 요소를 제거하는 방법을 예시로 보여주고 있습니다. 필요에 따라 큐의 조건과 동작을 자유롭게 수정하여 자신만의 "Snail Queue" 동작을 정의할 수 있습니다.
728x90
반응형
'Java' 카테고리의 다른 글
전략 패턴(Strategy Pattern)을 활용한 유연한 코드 구조 설계 (0) | 2024.11.11 |
---|---|
brute-force 방식과 사용자 정의 옵션 적용 방법 (Java로 ZIP 파일 암호 복구) (0) | 2024.11.11 |
Spring Test Suite 3 (STS 3) 다운로드 (0) | 2020.12.24 |
자바(Java) 멀티쓰레드(multi-thread) (0) | 2019.07.11 |
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |