라이브러리 활용 - 컬렉션 자료구조
LIFO와 FIFO 컬렉션
한모로그
2023. 2. 1. 21:27
후입선출과 선입선출
- 후입선출(LIFO): 나중에 넣은 객체가 먼저 빠져나가는 구조
- 선입선출(FIFO): 먼저 넣은 객체가 먼저 빠져나가는 구조
- 컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택 클래스와 FIFO 자료구조를 제공하는 큐 인터페이스를 제공
출처, 이것이 자바다
Stack
- Stack 클래스: LIFO 자료구조를 구현한 클래스
출처, 이것이 자바다
출처, 이것이 자바다
package ch15.sec06.exam01;
public class Coin {
private int value;
public Coin(int value) {
this.value = value;
}
//getter 메소드
public int getValue() {
return value;
}
}
package ch15.sec06.exam01;
import java.util.Stack;
/*
Stack 클래스 : Stack 자료구조를 설계한 클래스
*/
public class StackExample {
public static void main(String[] args) {
Stack<Coin> coinBox = new Stack<Coin>();
//동전넣기. 객체저장
coinBox.push(new Coin(100));
coinBox.push(new Coin(50));
coinBox.push(new Coin(500));
coinBox.push(new Coin(10));
//동전을 하나씩 꺼내오기. 객체를 참조
while(!coinBox.isEmpty()) {
Coin coin = coinBox.pop();
System.out.println("꺼내온 동전: " + coin.getValue() + "원");
}
}
}
Queue
- Queue 인터페이스: FIFO 자료구조에서 사용되는 메소드를 정의
- LinkedList: Queue 인터페이스를 구현한 대표적인 클래스
출처, 이것이 자바다
출처, 이것이 자바다
package ch15.sec06.exam02;
public class Message {
public String command;
public String to;
public Message(String command, String to) {
this.command = command;
this.to = to;
}
}
package ch15.sec06.exam02;
/*
Queue 인터페이스 : FIFO 구조.(First Input First Output)
*/
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
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", "이순신"));
//메세지를 하나씩 꺼내어 처리
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 + ": 님에게 SMS를 보냅니다.");
break;
case "sendKakaotalk":
System.out.println(message.to + ": 님에게 카카오톡을 보냅니다.");
break;
}
}
}
}