후입선출
- 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 뜻합니다.
선입선출
- 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말합니다.
Stack
- Stack 클래스는 LIFO 자료구조를 구현한 클래스입니다.
Stack<E> stack = new Stack<E>();
주요 메소드는 아래와 같습니다.
리턴 타입 | 메소드 | 설명 |
E | push(E item) | 주어진 객체를 스택에 넣습니다. |
E | peek() | 스택의 맨위 객체를 가져오고 객체를 스택에서 제거하지 않습니다 |
E | pop() | 스택의 맨위 객체를 가져오고 객체를 스택에서 제거 합니다 |
예시) 동전케이스
(먼저 넣은 동전이 제일 밑에 나중에 넣은 동전이 위로 가므로 동전을 위에서 뺄경우 마지막에 넣은 동전이 나옵니다.)
StackExample.java
package sec17.exam01;
import java.util.*;
public class StackExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack<Coin> Box = new Stack<Coin>();
Box.push(new Coin(1000));
Box.push(new Coin(500));
Box.push(new Coin(100));
Box.push(new Coin(50));
while(!Box.isEmpty()) {
Coin coin = Box.pop();
System.out.println("꺼낸 동전: " + coin.getValue());
}
}
}
Coin.java
package sec17.exam01;
import java.util.*;
public class StackExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack<Coin> Box = new Stack<Coin>();
Box.push(new Coin(1000));
Box.push(new Coin(500));
Box.push(new Coin(100));
Box.push(new Coin(50));
while(!Box.isEmpty()) {
Coin coin = Box.pop();
System.out.println("꺼낸 동전: " + coin.getValue());
}
}
}
Queue
- Queue 인터페이스는 FIFO 자료구조에서 사용되는 메소드를 정의하고 있습니다.
- Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList 입니다.
리턴 타입 | 메소드 | 설명 |
boolean | offer(E e) | 주어진 객체를 넣습니다. |
E | peek() | 객체 하나를 가져오고 객체를 큐에서 제거하지 않습니다 |
E | pool() | 객체 하나를 가져오고 객체를 큐에서 제거 합니다 |
예시) Queue를 이용한 간단한 메시지 큐를 구현한 예제
QueueExample.java
package sec17.exam01;
import java.util.*;
public class QueueExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue<Message> messageQueue = new LinkedList<Message>();
messageQueue.offer(new Message("sendMail", "Java"));
messageQueue.offer(new Message("sendSMS", "C"));
while(!messageQueue.isEmpty()) {
Message message = messageQueue.poll();
switch(message.command) {
case "sendMail":
System.out.println(message.to +" " + "sendMail");
break;
case "sendSMS":
System.out.println(message.to +" " + "sendSMS");
break;
}
}
}
}
Message.java
package sec17.exam01;
public class Message {
public String command;
public String to;
public Message(String command, String to) {
this.command = command;
this.to = to;
}
}
'학습단 > JAVA 학습단' 카테고리의 다른 글
21. 혼공자 21일차(입출력 스트림) (0) | 2023.08.14 |
---|---|
5주차 완료 (0) | 2023.08.12 |
19. 혼공자 19일차(컬렉션 프레임 워크_3) (0) | 2023.08.09 |
18. 혼공자 18일차(컬렉션 프레임 워크_2) (0) | 2023.08.08 |
17. 혼공자 17일차(컬렉션 프레임 워크) (0) | 2023.08.07 |