☭DEVELOPER/#2 웹개발(자바기반 풀스택)

[BACKEND]JAVA_ECLIPSE29 LIFO와 FIFO 컬렉션

조반짝 2023. 9. 4. 11:28
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
반응형