본문 바로가기
Java/기초문법

[Java] 컬렉션 자료구조 - LIFO와 FIFO 컬렉션

by worldcenter 2024. 9. 16.

컬렉션 프레임워크

 

자바는 널리 알려져 잇는 자료 구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 

java.util 패키지에 포함시켜 놓았습니다. 이를 총칭해서 컬렉션 프레임워크 라고 부릅니다.

 

Interface Interface / Class 특징 구현 클래스
Collection List - 순서를 유지하고 저장
- 중복 저장 가능
ArrayList, Vector, LinkedList
Set - 순서를 유지 X
- 중복 저장 X
HashSet, TreeSet
Queue - 선입선출(First-In-First-Out) LinkedList
Map - 키와 값으로 구성된 엔트리로 저장
- 키는 중복 저장 X
HashMap, Hashtable,
TreeMap, Properties 
Vector - 후입선출(Last-In-First-Out) Stack

 

 

LIFO와 FIFO 컬렉션

후입선출(LIFO)은 나중에 넣은 객체가 먼저 빠져나가고, 선입선출(FIFO)은 먼저 넣은 객체가 먼저 빠져나가는 구조를 말합니다.

컬렉션 프레임워크는 LIFO 자료구조를 제공하는 'Stack 클래스'와 FIFO 자료구조를 제공하는 'Queue 인터페이스'를 제공하고 있습니다.

스택을 응용한 대표적인 예가 JVM 스택 메모리 입니다. 스택 메모리에 저장된 변수는 나중에 저장된 것부터 제거 됩니다.

큐를 응용한 대표적인 예가 스레드풀(ExecutorService)의 작업 큐 입니다.

 

 

Stack 클래스

Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();

 

 

Stack 클래스 메서드

리턴 타입 메서드 설명
E push(E item) 주어진 객체를 스택에 넣습니다.
E pop() 스택의 맨 위 객체를 빼냅니다.

 

 

Queue 인터페이스

Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList 입니다. 

Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>();

 

 

Queue 인터페이스 메서드

리턴 타입 메서드 설명
boolean offer(E e) 주어진 객체를 큐에 넣습니다.
E poll() 큐에서 객체를 빼냅니다.