ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 큐 구현하기 | ArrayList, LinkedList, ArrayDeque
    알고리즘 2023. 8. 10. 15:01

    자바에서 큐Queue 자료 구조를 직접 지원하는 인터페이스는 없다.

    대신 다음의 방법들로 큐를 쓸 수 있다.

     

    1. ArrayList

    • ArrayList를 활용해 직접 queue 클래스를 만들기
    class MyQueue {
    	private List<String> list = new ArrayList<String>(); // private 접근
    
    	// 큐 안에 x라는 요소를 저장합니다.
    	public void enqueue(String x) {
    		list.add(x); // 내부에 이미 생성된 리스트의 add(맨 끝에 저장)
    	}
    
    	// 맨 앞의 요소를 반환 (index 0)
    	public String peek() {
    		return list.get(0); // 들어간지 가장 오래
    	}
    
    	// 맨 앞의 요소를 반환하고 제거
    	public String dequeue() {
    		String x = list.get(0);
    		list.remove(0);
    		return x;
    	}
    }
    • 실행문
    public class Q_ArrayList {
    
    	public static void main(String[] args) {
    		/*
    		 * Queue 1. ArrayList로 구현하기
    		 */
    
    		MyQueue queue = new MyQueue();
    		queue.enqueue("아이스 아메리카노");
    		queue.enqueue("아이스 돌체라떼");
    		queue.enqueue("콜드브루 따뜻하게");
    		System.out.println(queue.peek());
    		System.out.println(queue.dequeue());
    		System.out.println(queue.peek());
    	}
    
    }
    • 실행결과

    그러나 이 방법은 주로 사용되진 않는다.

     

    2. LinkedList

    import java.util.LinkedList;
    
    public class Q_LinkedList {
    
    	public static void main(String[] args) {
    		// 2. LinkedList
    		LinkedList<String> queue2 = new LinkedList<>();
    		// enqueue -> 새롭게 줄서기 => add
    		// dequeue -> 가장 오래선 사람 집에 보내기 => poll
    		// 누가 가장 오래 섰나? -> peek
    		queue2.add("아이스아메리카노"); // 1
    		queue2.add("아이스돌체라떼"); // 2
    		queue2.add("콜드브루 따뜻하게"); // 3
    		System.out.println(queue2);
    		System.out.println(queue2.poll());
    		System.out.println(queue2);
    		System.out.println(queue2.poll());
    		System.out.println(queue2);
    		System.out.println(queue2.poll());
    		System.out.println(queue2);
    	}
    
    }
    • 실행결과

    3. ArrayDeque

    import java.util.ArrayDeque;
    
    public class Q_ArrayDeque {
    
    	public static void main(String[] args) {
    		// 3. ArrayDeque
    		ArrayDeque<String> queue3 = new ArrayDeque<>();
    		queue3.add("아이스아메리카노"); // 1
    		queue3.add("아이스돌체라떼"); // 2
    		queue3.add("콜드브루 따뜻하게"); // 3
    		System.out.println(queue3);
    		System.out.println(queue3.poll());
    		System.out.println(queue3);
    		System.out.println(queue3.poll());
    		System.out.println(queue3);
    		System.out.println(queue3.poll());
    		System.out.println(queue3);
    
    	}
    
    }
    • 실행결과

Designed by Tistory.