[Java 활용] 3.9 Queue 인터페이스

Java의 Queue 인터페이스는 자료구조 큐를 약속한 것입니다. 자료구조 큐는 FIFO(First In First Out, 선입선출) 형태로 자료를 보관하고 꺼내는 버퍼입니다. Java의 Queue 인터페이스에서는 보관할 때 offer 메서드를 사용하며 가장 먼저 보관한 자료를 꺼낼 때는 poll 메서드를 사용합니다. 이 외에 가장 먼저 보관한 자료를 단순 참조하는 peek 메서드와 비었는지 판별하는 empty 메서드를 제공하고 있습니다.

public void offer(Element data);//순차보관
public Element poll();//가장 먼저 보관한 값 꺼내고 반환
public Element peek();//가장 먼저 보관한 값 단순 참조, 꺼내지 않음
public boolean empty(); //비어있는지 판별

그리고 제네릭 형태로 사용할 때 큐를 구현한 클래스인 LinkedList, priorityQueue, priorityBlockingQueue 를 생성하여 사용합니다.

다음은 LinkedList를 생성하여 큐를 사용하는 예제입니다.

▷ 소스 3.11 큐 사용 예

//큐 사용 예
import java.util.Queue;
import java.util.LinkedList;
public class Program {
	public static void main(String[] args){
		Queue<String> q = new LinkedList<String>();
		q.offer("강감찬"); //"강감찬"
		q.offer("홍길동"); //"강감찬","홍길동"
		System.out.println(q.peek());//"강감찬" 참조
		//여전히 "강감찬","홍길동"
		
		System.out.println(q.poll());//"강감찬" 꺼냄, 현재 "홍길동"
		q.offer("이순신"); //"홍길동", "이순신"
		q.offer("김구"); //"홍길동", "이순신", "김구"
		while(q.isEmpty()==false){
			System.out.println(q.poll());
			//"홍길동", "이순신", "김구" 순으로 꺼냄
		}		
	}

▷ 소스 3.11 실행 결과

강감찬
강감찬
홍길동
이순신
김구
소스 3.11 수행 과정(Loop 이전까지)