소소한개발팁
Published 2023. 4. 27. 15:35
Queue (큐) 컴퓨터 언어/Java
반응형

큐(Queue)는 선입선출(First-In-First-Out, FIFO) 원칙에 따라 작동하는 자료 구조입니다. 즉, 큐에 추가된 요소 중 가장 먼저 추가된 것이 가장 먼저 제거됩니다.

 

Java에서는 내장 Queue 인터페이스를 사용할 수 있습니다. Queue 인터페이스는 Collection 인터페이스의 하위 인터페이스로, 큐에 요소를 추가, 제거 및 검사하는 데 사용할 수 있는 여러 가지 메소드를 제공합니다.

 

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

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        // 큐 요소 추가
        queue.add("apple");
        queue.add("banana");
        queue.add("orange");
        
        // 큐 요소 중 첫번째 값 삭제
        String firstElement = queue.remove();
        System.out.println("Removed element: " + firstElement);
        
        // 큐의 첫번째 요소 검사
        String peekElement = queue.peek();
        System.out.println("Peeked element: " + peekElement);
        
        // for-each 반복문을 통한 요소 출력
        System.out.println("Elements in the queue:");
        for (String element : queue) {
            System.out.println(element);
        }
       
    }
}

 

이 예제에서는 LinkedList 클래스를 사용하여 Queue를 생성합니다. 그런 다음, add() 메소드를 사용하여 세 개의 요소를 큐에 추가합니다.

 

다음으로 remove() 메소드를 사용하여 큐에서 첫 번째 요소를 제거하고 콘솔에 출력합니다. 또한 peek() 메소드를 사용하여 큐에서 첫 번째 요소를 검사하고 콘솔에 출력합니다.

 

add(E e): 큐에 요소를 추가합니다. 추가가 실패한 경우 예외를 throw합니다.

offer(E e): 큐에 요소를 추가합니다. 추가가 실패한 경우 false를 반환합니다.

remove(): 큐에서 첫 번째 요소를 제거하고 그 요소를 반환합니다. 큐가 비어있는 경우 예외를 throw합니다.

poll(): 큐에서 첫 번째 요소를 제거하고 그 요소를 반환합니다. 큐가 비어있는 경우 null을 반환합니다.

element(): 큐에서 첫 번째 요소를 반환합니다. 큐가 비어있는 경우 예외를 throw합니다.

peek(): 큐에서 첫 번째 요소를 반환합니다. 큐가 비어있는 경우 null을 반환합니다.

 

 

  • 슬라이딩 윈도우(Sliding Window) 알고리즘: 슬라이딩 윈도우는 연속적인 부분 배열을 처리하는 데 사용되며, 큐를 사용하여 구현됩니다. 이 알고리즘은 일정한 크기의 윈도우를 슬라이드하여 연속적인 부분 배열을 만들고 처리합니다.

 

  • 구현 문제: 구현 문제는 주어진 조건에 따라 코드를 구현하는 문제입니다. 이러한 문제에서는 종종 큐를 사용하여 구현할 수 있습니다. 예를 들어, 큐를 사용하여 LRU(Least Recently Used) 캐시를 구현할 수 있습니다.

 

반응형

'컴퓨터 언어 > Java' 카테고리의 다른 글

JPA 기본 개념과 활용 방법  (0) 2023.08.29
Project Jigsaw 사용 방법  (0) 2023.07.09
Stream  (0) 2023.07.06
Sliding Window 알고리즘  (0) 2023.04.27
BFS(너비 우선 탐색) 알고리즘  (0) 2023.04.27
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!