[TIL][Java][2023-12-05] 컬렉션 - Queue

2023. 12. 5. 19:03TIL/Java

Queue

 

빨대처럼 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합이다.

 

 

  • 특징
    • Firts In First Out : 먼저 들어간 순서대로 값을 조회할 수 있다.
    • 때문에 넣는 기능(add()), 조회(peek()), 꺼내는 기능(poll())만 존재한다.
    • Queue는 생성자가 없는 껍데기라서 바로 생성할 수는 없다.(인터페이스)
    • 생성자가 존재하는 클래스인 LinkedList를 사용하여 Queue를 생성해서 받을 수 있다.

 

  • 기능
    • 선언 : Queue<Integer> intQueue 의 형태로 선언한다.
    • 생성 : new LinkedList<Integer>(); 의 형태로 생성한다.
    • 추가 : intQueue.add(추가할 값) 의 형태로 값을 맨 위에 추가한다.
    • 조회 : intQueue.peek() 의 형태로 맨 아래값을 조회한다.
    • 꺼내기 : intQueue.poll() 의 형태로 맨 아래값을 꺼낸다.(꺼내고 나면 삭제됨)

 

 

// Queue 

// (사용하기 위해선 java.util.LinkedList; 와 import java.util.Queue; 를 추가해야한다.)

import java.util.LinkedList;
import java.util.Queue;

public class Main {

	public static void main(String[] args) {
		Queue<Integer> intQueue = new LinkedList<>(); // 선언 및 생성
		
        // 값 추가
		intQueue.add(1);
		intQueue.add(2);
		intQueue.add(3);

		while (!intQueue.isEmpty()) { // 다 지워질때까지 출력
			System.out.println(intQueue.poll()); // 1,2,3 출력
		}

		// 다시 추가
		intQueue.add(1);
		intQueue.add(2);
		intQueue.add(3);

		// peek()
		System.out.println(intQueue.peek()); // 1 출력 (맨먼저 들어간값이 1이기때문)
		System.out.println(intQueue.size()); // 3 출력 (peek() 할때 삭제 안됐음)

		// poll()
		System.out.println(intQueue.poll()); // 1 출력
		System.out.println(intQueue.size()); // 2 출력 (poll() 할때 삭제 됐음)

		System.out.println(intQueue.poll()); // 2 출력
		System.out.println(intQueue.size()); // 1 출력 (poll() 할때 삭제 됐음)

		while (!intQueue.isEmpty()) { // 다 지워질때까지 출력
			System.out.println(intQueue.poll()); // 3 출력 (마지막 남은 값 하나)
		}
	}
}