판봉 개발 일기

FIFO 컬렉션과 Queue 인터페이스 본문

자바 복습

FIFO 컬렉션과 Queue 인터페이스

판봉 2021. 7. 14. 12:45
728x90

FIFO 컬렉션은 다른 말로 "선입선출"이라고한다.

"선입선출"이라 함은 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.

 

또한 FIFO 자료구조를 제공하는 Queue 인터페이스를 제공하고 있다.

 

LIFO 컬렉션의 Stack은 클래스이며 FIFO 컬렉션의 Queue는 인터페이스란 점을 명확히 상기시켜야겠다.

 

위 사진 처럼 Queue의 구조는 먼저 기다린 사람이 먼저 가게안으로 들어가는 것처럼 연상해서 이해하면 쉬울 것 같다.

이것또한 Stack과 다르게 가로라고 이해하면 좋을것이라고 생각이 된다.


다음은 Queue 인터페이스의 메소드를 정의한 것이다.

리턴 타입 메소드 설명
boolean offer(E e) 주어진 객체를 넣음
E peek() 객체 하나를 가져옴
객체를 큐에서 제거하지 않음
(stack)과 비슷하다고 생각하면편함
E poll() 객체 하나를 가져옴
객체를 큐에서 제거함

Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다. 

앞선 글에서 살펴보았듯이 LinkedList는 List 인터페이스를 구현 했기 때문에 List컬렉션이기도 하다.

따라서 다음과 같이 쓸 수 있다.

Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new Linkedlist<>();

다음 코드는 Queue를 이요한 코드이다.

public class Message {
	public String command;
    public String to;
    
    public Message(String command, String to) {
    	this.command = command;
        this.to = to;
    }
}
import java.util.LinkedList;
import java.util.Queue;

public clas QueueExample {
	public static void main(String[] args) {
    Queue<Message> messageQueue = new LinkedList<Message>(); // LinkedList 생성
    
    messageQueue.offer(new Message("sendMail", "판봉"));
    messageQueue.offer(new Message("sendSMsS", "신밧드));
    messageQueue.offer(new Message("sendKakaotalk", "홍두께));
    
    while(!messageQueue.isEmpty()) {
    	Message message = messageQueue.poll();// 객체에서 꺼내고 삭제
        switch(message.comman) { // 정수와 스트링이 조건으로 들어갈수있음
        case "sendMail":
        System.out.println(message.to + "님에게 메일을 보냄");
        break; // 안써주면 난리남
        
        case "sendSMS":
        System.out.println(message.to +"님에게 SMS을 날림");
        break;
        
        case " sendKakaotalk":
        System.out.println(message.to + "님에게 카톡을 보냅니다.");
        break;
        		
        }
    }
    }
}

'자바 복습' 카테고리의 다른 글

바이트 출력 스트림 : OutputStream  (0) 2021.07.14
입출력 스트림  (3) 2021.07.14
LIFO 컬렉션과 Stack 클래스  (0) 2021.07.14
Hashtable에 대하여  (0) 2021.07.14
Map 컬렉션중 하나인 HashMap에 대하여 알아보자  (0) 2021.07.13