컬랙션 프레인워크에는 LIFO(Last In Frist Out) 자료구조를 제공하는 Stack 클래스와
FIFO(Friest In Friest Out) 자료구조를 제공하는 Queue 인터페이스가 있다.
Stack
리턴 타입 | 메소드 | 설명 |
E | push(E item) | 주어진 객체를 스택에 넣습니다. |
E | peek() | 스택의 맨 위 객체를 가져옵니다. 객체를 스텍에서 제거하지 않습니다. |
E | pop() | 스텍의 맨 위 객체를 가져옵니다. 객체를 스텍에서 제거합니다. |
Stack 객체를 생성하려면 저장할 객체 타입을 E 타입 파라미터 자리에 표기하고 기본 생성자를 호출해야 한다.
String을 저장하는 Stack은 다음과 같이 작성할 수 있다.
Stack<E> stack = new Stack<E>
Stack<E> stack = new Stack<>()
(Stack의 E 타입 파라미터(<>)를 생략하면 왼쪽 Stack에 저장된 타입을 따라 감)
예시코드
- 동전 클래스
package set;
public class Coin {
private int value;
public Coin(int value) {
super();
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
- Stack을 이용한 동전 케이스
package set;
import java.util.Stack;
public class StackExam {
public static void main(String[] args) {
Stack<Coin> stack = new Stack<Coin>();
stack.push(new Coin(100));
stack.push(new Coin(50));
stack.push(new Coin(500));
stack.push(new Coin(100));
stack.push(new Coin(50));
stack.push(new Coin(50));
stack.push(new Coin(500));
while (!stack.isEmpty()) {
Coin coin = stack.pop();
System.out.println("꺼낸 동전: " + coin.getValue() + " 원");
}
}
}
Queue
리턴 타입 | 메소드 | 설명 |
boolean | offer(E e) | 주어진 객체를 넣습니다. |
E | peek() | 객체를 하나 가져옵니다. 객체를 스텍에서 제거하지 않습니다. |
E | poll() | 객체를 하나 가져옵니다. 객체를 스텍에서 제거합니다. |
Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.
LinkedList는 List 인터페이스를 구현했기 때문에 List 컬랙션이디고 하다.
LinkedList 객체를 Queue 인터에이스 차입으로 변환할려면 아래와 같이 작성할 수 있다.
Queue <E> quese = new LinkedList<E>();
Queue <E> quese = new LinkedList<>();
(Stack의 E 타입 파라미터(<>)를 생략하면 왼쪽 Stack에 저장된 타입을 따라 감)
예시코드
- Message 클래스
package set;
public class Message {
public String command;
public String to;
public Message(String command, String to) {
super();
this.command = command;
this.to = to;
}
}
- Queue를 이용한 메시지 큐
package set;
import java.util.LinkedList;
import java.util.Queue;
public class QueueExam {
public static void main(String[] args) {
Queue<Message> queue = new LinkedList<Message>();
queue.offer(new Message("sendMail", "Jack"));
queue.offer(new Message("sendSMS", "Maggie"));
queue.offer(new Message("sendKakaotalk", "Blue"));
queue.offer(new Message("sendLine", "Jack"));
while (!queue.isEmpty()) {
Message msg = queue.poll();
switch (msg.command) {
case "sendMail":
System.out.println(msg.to + " 님께 메일을 보냅니다");
break;
case "sendSMS":
System.out.println(msg.to + " 님께 문자를 보냅니다");
break;
case "sendKakaotalk":
System.out.println(msg.to + " 님께 카톡을 보냅니다");
break;
case "sendLine":
System.out.println(msg.to + " 님께 라인을 보냅니다");
break;
}
}
}
}
'📖혼자공부하는자바' 카테고리의 다른 글
Http 상태코드 (0) | 2023.07.19 |
---|---|
Chapter10-2 예외 처리 (1) | 2022.12.20 |
Chapter 07-3 추상 클래스, 추상 메소드 (0) | 2022.12.10 |
Chapter 06-6-1 패키지와 접근 제한자 (0) | 2022.12.02 |
Chapter 06-4-2 메소드 호출 (0) | 2022.11.29 |