티스토리 뷰

Java/JAVA

Queue - FIFO (first in first out)

Jenny_yoon 2023. 1. 9. 18:57
728x90
반응형

 

 

FIFO (first in first out)

 

: 선입선출. 컬렉션 프레임 워크에는 LIFO 자료구조를 제공하는 Stack클래스와 FIFO 자료구조를 제공하는 Queue 인터페이스를 제공하고 있다.

 

 

Queue (큐)

 

줄 , 혹은 줄을 서서 기다리는 것. 

큐 : 줄 , 혹은 줄을 서서 기다리는 것 : 순차 처리:선입선출

 

 

특징

 

  • 큐의 가장 첫 원소를 front / 가장 끝 원소를 rear이라고 함.
    큐는 들어올 때 rear로 들어오지만 나올때는 front부터 빠지는 특성이 있다.
    접근방법은 가장 첫 원소와 끝 원소로만 가능. 가장 먼저 들어온 프론트 원소가 가장 먼저 삭제됨.
  • 우선순위가 같은 작업 예약 (프린터의 인쇄 대기열)
  • 은행 업무
  • 콜센터 고객 대기시간
  • 프로세스 관리
  • 너비 우선 탐색(BFS, Breadth-First Search) 구현
  • 캐시(Cache) 구현

 

 

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

class Message{
	public String command;
	public String to;
	
	public Message(String command, String to) { //생성자
		this.command = command;
		this.to = to;
	}
}

public class Queue01 {
	public static void main(String[] args) {
		Queue<Message> messageQueue = new LinkedList<Message>(); //큐 생성
		
		messageQueue.offer(new Message("sendMail", "홍길동"));
		messageQueue.offer(new Message("sendSMS", "신용권"));
		messageQueue.offer(new Message("sendKakaotalk", "홍두깨"));

//		System.out.println(messageQueue.poll().to);//홍길동
//		System.out.println(messageQueue.poll().command);//sendMail
//		System.out.println(messageQueue.poll());//coll.Message@5594a1b5
//		System.out.println(messageQueue);//[coll.Message@3b6eb2ec, coll.Message@1e643faf]
		//messageQueue.getValue()는 사용불가! (이건 getter, setter)
        
		while(!messageQueue.isEmpty()) {
			Message message = messageQueue.poll();
			switch (message.command) {
			case "sendMail" :
				System.out.println(message.to + "님에게 보냄."); //홍길동님에게 보냄.
				break;
			case "sendSMS" : 
				System.out.println(message.to + "님에게 보냄."); //신용권님에게 보냄.
				break;
			case "sendKakaotalk" : 
				System.out.println(message.to + "님에게 보냄."); //홍두깨님에게 보냄.
				break;
			}
		}
	}
}
728x90
반응형

'Java > JAVA' 카테고리의 다른 글

IO(Input/Output) & Stream  (1) 2023.01.15
Garbage Collection (가비지 컬랙션)  (0) 2023.01.11
Stack - LIFO(last in first out)  (0) 2023.01.09
컬렉션 프레임워크(Collection Framwork)란?  (0) 2023.01.08
Map  (0) 2023.01.08
댓글
250x250
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday