728x90
반응형
LIFO
Stack 형 자료구조
동전클래스
package chapter13.sec02.exam01;
// 다음은 동전 케이스를 Stack 클래스로 구현한 예시입니다.
// 동전 케이스는 위에만 열려있는 스택구조를 가지고있습니다. 먼저 넣은 동전은 제일 밑에깔리고
// 나중에 넣은 동전이 위에 쌓이기 때문에 Stack에서 동전을 빼면
// 마지막에 넣은 동전이 나오게 됩니다. 우선, 동전 클래스를 소스코딩해봅니다.
public class Coin {
// value 필드 선언
private int value;
// value 매개변수를 입력받아서 처리하는 Coin 생성자 선언
public Coin(int value) {
this.value = value;
}
//getValue() 메서드 선언
public int getValue() {
return value;
}
}
stack을 이용한 동전케이스
package chapter13.sec02.exam01;
import java.util.Stack;
// Stack을 이용한 동전 케이스 구현 StackExample 실행클래스를 소스코딩합니다.
public class StackExample {
public static void main(String[] args) {
Stack<Coin> coinBox = new Stack<Coin>();
// Stack 형의 자료구조로 구성된 coinBox에 4개의 동전 객체를 생성해서 넣어줍니다.
coinBox.push(new Coin(100));
coinBox.push(new Coin(50));
coinBox.push(new Coin(500));
coinBox.push(new Coin(10));
// 반복문(while)으로 반복해서 동전케이스(coinBox)가 비어있지 않을 경우, 반복해서
// coinBox가 비어있는상태가 !아니라면
while (!coinBox.isEmpty()) {
//동전 케이스(coinBox)에서 제일 위의 동전을 꺼내옵니다.
Coin coin = coinBox.pop();
System.out.println("꺼내 온 동전 = " + coin.getValue() + "원");
}
}
}
동전을 나중에 선언한 순서대로 출력된다.
FIFO
QUEUE
메세지 클래스
package chapter13.sec02.exam02;
// 다음은 Queue 인터페이스를 이용해서 간단한 메시지 큐를 구현한 예제입니다.
// 먼저 넣은 메시지가 반대쪽으로 먼저 나오기 때문에 넣은 순서대로 메시지가 처리됩니다.
// 즉. FIFO(First In First Out, 선입선출)형의 자료구조 처리가 가능합니다.
// 우선, Message 클래스를 소스 코딩합니다.
public class Message {
// 필드 선언
public String command;
public String to;
// 위에 필드를 매개변수로 갖는 Message 생성자 선언
public Message(String command, String to) {
this.command = command;
this.to = to;
}
}
Queue를 이용한 메시지 큐
package chapter13.sec02.exam02;
import java.util.LinkedList;
import java.util.Queue;
// Queue를 이용한 메시지 쿠 QueueExample 실행 클래스를 소스 코딩합니다.
public class QueueExample {
public static void main(String[] args) {
Queue<Message> messageQueue = new LinkedList<Message>();
// List 형 자료구조의 LinkedList 타입에서 Queue 형식(선입선출)으로
// 데이터를 처리하기 위하여, offer() 메서드로 3개의 데이터를 넣어줍니다.
messageQueue.offer(new Message("sendMail", "장나라"));
messageQueue.offer(new Message("sendSMS", "김희선"));
messageQueue.offer(new Message("sendKakaotalk", "김연아"));
// 반복문(while문)으로 messageQueue 가 비어있지않을 경우,
// 반복해서
while (!messageQueue.isEmpty()) {
// 메시지 큐에서 poll() 메서드로 데이터를 가져옵니다.
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;
}
}
}
}
728x90
반응형
'☭DEVELOPER > #2 웹개발(자바기반 풀스택)' 카테고리의 다른 글
[BACKEND]JAVA_ECLIPSE 31 보조스트림 (0) | 2023.09.04 |
---|---|
[BACKEND]JAVA_ECLIPSE 30 입출력 스트림 (0) | 2023.09.04 |
[BACKEND]JAVA_ECLIPSE28 Properties (0) | 2023.09.04 |
[BACKEND] 코딩테스트 9 (0) | 2023.09.01 |
[BACKEND]JAVA_ECLIPSE25 java.util 패키지 (0) | 2023.08.31 |