LIFO는 Last In First Out 의 약자로 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.
즉, 입구와 출구가 하나로 통일된 구조이다.
FIFO는 First In First Out 의 약자로 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.
입구와 출구가 따로 존재하는 구조이다.
Stack 클래스는 LIFO 자료구조를 구현한 클래스이다.
| 리턴 타입 | 메소드 | 설명 |
|---|---|---|
| E | push(E item) | 주어진 객체를 스택에 넣는다. |
| E | peek() | 스택의 맨 위 객체를 가져온다. 객체를 제거하지 않는다. |
| E | pop() | 스택의 맨 위 객체를 가져온다. 객체를 제거한다. |
Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();
Box 객체 생성
Stack에 쌓을 객체의 클래스를 생성합니다.
public class Box {
private int value;
public Box(int value){
this.value = value;
}
public int getValue(){
return value;
}
}
main 작성
Stack<Box> boxes = new Stack<>();
boxes.push(new Box(5));
boxes.push(new Box(50));
boxes.push(new Box(500));
System.out.println(boxes.pop().getValue());
System.out.println(boxes.peek().getValue());
System.out.println(boxes.pop().getValue());
출력결과
500
50
50
Queue 인터페이스는 FIFO 자료구조에서 사용되는 메소드를 정의하고 있다.
| 리턴 타입 | 메소드 | 설명 |
|---|---|---|
| boolean | offer(E e) | 주어진 객체를 넣는다. |
| E | peek() | 객체를 가져온다. 객체를 제거하지 않는다. |
| E | poll() | 객체를 가져온다. 객체를 제거한다. |
Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.
Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>();
message 클래스 생성
public class Message {
public String command;
public String to;
public Message(String command, String to){
this.command = command;
this.to = to;
}
}
main 작성
Queue<Message> messageQueue = new LinkedList<Message>();
messageQueue.offer(new Message("sendMail","홍길동"));
messageQueue.offer(new Message("sendSMS", "신짱구"));
Message message = messageQueue.poll();
System.out.println(message.command + message.to);
System.out.println(messageQueue.poll().to);
출력 결과
sendMail홍길동
신짱구