후입선출 LIFO(Last In First Out) 은 마지막에 들어온 데이터가 가장 먼저 나가는 방식
선입선출 FIFO(First In First Out) 은 먼저 들어온 데이터가 가장 먼저 나가는 방식
LIFO vs FIFO 비교
| 구분 | LIFO | FIFO |
| 정의 | 마지막에 들어온 데이터가 먼저 나갑니다. | 먼저 들어온 데이터가 먼저 나갑니다. |
| 자료구조 | 스택(Stack) | 큐(Queue) |
| 예시 | 함수 호출 스택, Undo 기능 | 대기열 시스템, 네트워크 패킷 처리 |
| 일상 예시 | 책을 쌓아 올린 후 맨 위에서부터 꺼내는 방식 | 줄을 서서 차례대로 물건을 구매하는 방식 |
| 동작 방식 | Push : 데이터를 스택의 맨 위에 추가한다 Pop : 스택의 맨 위에 있는 데이터를 제거학 반환 |
Enqueue : 데이터를 큐의 뒤에 추가한다 Dequeue : 큐의 앞에 있는 데이터를 제거하고 반환 |
이렇게 LIFO와 FIFO는 데이터 처리 순서의 차이에 따라 다르게 사용
- Stack
: Stack클래스는 LIFO 자료구조를 구현한 클래스이다
Stack 클래스 생성 방법
Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();
| 리턴타입 | 메소드 | 설명 |
| E | push(E item) | 주어진 객체 Stack에 넣는다 |
| E | pop() | Stack의 맨 위 객체를 빼낸다 |
- Queue
: Queue 인터페이스는 FIFO 자료구조에서 사용되는 메소드를 정의하고 있다
Queue 를 구현하는 인터페이스
(대표적인 클래스는 LinkedList이다 그렇기 때문에
LinkedList객체를 인터페이스 변수에 다음과 같이 대입이 가능하다)
Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>();
| 리턴타입 | 메소드 | 설명 |
| boolean | offer(E e) | 주어진 객체를 Queue 에 넣는다 |
| E | poll() | Queue 에서 객체를 빼낸다 |
'Java' 카테고리의 다른 글
| Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_수정할 수 없는 컬렉션 (0) | 2024.10.18 |
|---|---|
| Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_동기화된 컬렉션 (0) | 2024.10.18 |
| Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_Comparable 과 Comparator (0) | 2024.10.18 |
| Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_TreeMap (0) | 2024.10.18 |
| Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_TreeSet (0) | 2024.10.18 |