JAVA 공부

[자바] 큐(QUEUE) 클래스 사용법과 예제 알아보기

개발자현우 2023. 4. 19. 03:23

큐(QUEUE)란?

큐는 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구성이다.

 

큐의 특징

  1. Queue 먼저 들어간 데이터가 먼저 나오는 구조를 가지며, 이를 FIFO (First In First Out) 구조라고한다.
  2. 큐에서는 한쪽 끝을 front 정하고, 삭제 연산만 수행한다.
  3. 반대쪽 끝은 rear 정하고, 삽입 연산만 수행한다.
  4. 그래프의 넓이 우선 탐색 (BFS)에서 큐를 사용한다.
  5. 컴퓨터 버퍼에서도 큐가 주로 사용됩니다. 입력이 즉시 처리되지 못하는 경우에는 버퍼() 만들어 데이터를 대기시키는 용도로 활용된다.

큐의 예제

큐 선언방법

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

public class Main {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();  //String 형 선언
        Queue<Integer> queue = new LinkedList<>(); //Int 형 선언
    }
}

코드에서 Queue<Integer> Integer 타입의 Queue 선언하고 Queue<String>은 String 타입의 Queue를 선언한다 ,  new LinkedList<>() 사용하여 LinkedList 객체를 생성하여 할당한다.

 

 

큐 값 추가하는 방법

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

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // 값 추가
        queue.add(1);
        queue.add(2);
        queue.add(3);

        // 혹은
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
    }
}

값을 Queue 추가하려면 add() 또는 offer() 메소드를 사용할 있다. 메소드 모두 Queue (rear) 요소를 추가하지만, add() Queue 공간이 없을 예외를 발생시키는 반면, offer() false 반환한다.

큐 값 삭제하는 방법

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

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // 값 추가
        queue.add(1);
        queue.add(2);
        queue.add(3);

        // 값 삭제
        Integer removedElement = queue.remove(); // 값이 1인 요소가 삭제되고 반환

        // 혹은
        Integer polledElement = queue.poll(); // 값이 2인 요소가 삭제되고 반환
    }
}

Queue에서 값을 삭제하려면 remove() 또는 poll() 메소드를 사용할 있다. 메소드 모두 Queue (front)에서 요소를 삭제하고 반환하지만, remove() Queue 비어 있을 예외를 발생시키는 반면, poll() null 반환한다.

 

Queue 에서 가장 먼저 들어간 값 출력

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

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // 값 추가
        queue.add(1);
        queue.add(2);
        queue.add(3);

        // 가장 먼저 들어간 값 출력
        Integer firstElementPeek = queue.peek(); // 1을 반환
        System.out.println("Peek: " + firstElementPeek);

        // 혹은
        Integer firstElementElement = queue.element(); // 1을 반환
        System.out.println("Element: " + firstElementElement);
    }
}

Queue에서 가장 먼저 들어간 값을 출력하려면 peek() 또는 element() 메소드를 사용할 있다. 메소드 모두 Queue (front) 있는 요소를 반환하지만, peek() Queue 비어 있을 null 반환하는 반면, element() 예외를 발생시킨다.

'JAVA 공부' 카테고리의 다른 글

Spring3.0 이상 버전에서 jstl 이 제대로 적용되지 않을때  (0) 2023.04.05
for문/확장 for  (0) 2023.03.02
MyBatis  (0) 2023.01.16