자료구조 & 알고리즘/자료구조 & 알고리즘

[자료구조] Queue 구현한 간단한 대기열 시스템

오징어달료 2024. 9. 12. 02:50

Queue


Queue

Queue 자료구조의 특성인 FIFO(First In, First Out) 원칙에 따라 순차적으로 입장하는 간단한 코드를 작성

package stack;

import jdk.jshell.spi.ExecutionControl;

import java.util.*;

public class Queue02 {
    public static void main(String[] args) {
        // Queue - LinkedList로 구현하는 대기번호
        Queue<String> queue = new LinkedList<>();
        Timer time = new Timer();

        queue.add("김철수");
        queue.add("홍길동");
        queue.add("양동근");
        queue.add("김길수");


        System.out.println("-------------------------------------------");
        System.out.println(">>>>> " + queue.toString() + " 대기중입니다.");

        int qSize = queue.size();
        for(int i = 0; i < qSize; i++ ){
            System.out.println("-------------------------------------------");
            try{
                Thread.sleep(2000);
                System.out.println(">>>>> " + queue.poll() + " 입장했습니다");
                System.out.println(">>>>> " + queue.size() + " 명 대기중입니다.");

                if(queue.size() == 0){
                    System.out.println("-------------------------------------------");
                    System.out.println(" 모두 입장 완료하였습니다. ");
                    System.out.println("-------------------------------------------");
                    System.out.println(" >> 시스템을 종료합니다. ");
                    System.out.println("-------------------------------------------");
                    System.exit(0); // 프로그램 종료
                }

            }catch (InterruptedException e){
                e.printStackTrace();
            }

        }


    }

}

설명

Queue 인터페이스 LinkedList를 구현하여 순차적으로 입장하는 것을 코드로 구현.

add() : 고객들의 순서를 저장 (가장 먼저 들어온 순서되로 누적됨)

poll() : 입장 (가장 먼저 들어온 값이 출력되고, 해당 위치는 삭제됨)

Thread.sleep(2000) : 2초 간격으로 입장

간단하게 구현한 코드이기 때문에 실제 대기열 시스템이라고 보기는 어렵지만, 먼저 들어온 데이터가 먼저 나간다는 FIFO 개념에
따라 코드가 동작하는 것을 확인할수 있음.