[JAVA] 18-3. 선후 구조 (LIFO, FIFO) 컬렉션의 정의와 사용법

Re_Go·2024년 6월 7일
0

JAVA

목록 보기
28/37
post-thumbnail

1. LIFO와 FIFO의 정의

LIFOLast In First Out 의 약자인데요. 마지막에 넣은 요소가 먼저 나간다는 의미로, 위는 뚤려있고 아래는 막혀있는 통에 위에서 아래로 요소들을 순차적으로 적재하는 모습을 생각하시면 되는데요.

반면 FIFOFirst In First Out의 약자로, 먼저 넣은 요소가 먼저 나간다는 의미로, 양 옆이 뚤려있는 통에 왼쪽에서 오른쪽으로 순차적으로 요소를 순차적으로 적재한다고 생각하시면 편합니다.

2. 자료구조 컬렉션

앞서 소개해드린 LIFO와 FIFO를 구현한 컬렉션이 자바에 존재하는데요. LIFO를 구현한 컬렉션은 '쌓인다' 라는 의미로 stack 컬렉션이라 불리고, FIFO를 구현한 컬렉션은 '줄을 서다' 라는 의미로 queue 컬렉션이라고 불립니다.

stack 컬렉션은 기본적으로 두 가지 메서드인 push, pop이 존재하며, push는 앞에서부터 순차적으로 적재
를 하고, pop은 가장 마지막에 집어 넣은 요소를 추출
하는 메서드입니다.

queue 컬렉션 또한 두 가지 메서드인 offerpoll이 존재합니다. offer는 push와 마찬가지로 순서대로 적재를 하는데, poll은 pop과는 다르게 먼저 적재된 요소를 추출하는 메서드입니다.

// Stack 사용 예시

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        // Stack 생성
        Stack<String> stack = new Stack<>();

        // 데이터 추가 (push)
        stack.push("A");
        stack.push("B");
        stack.push("C");

        // 데이터 추출 (pop) - 최근에 추가된 데이터부터 추출됨
        while (!stack.isEmpty()) {
            System.out.println(stack.pop());
        }
    }
}


// queue 사용 예시 

import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        // Queue 생성
        Queue<String> queue = new LinkedList<>();

        // 데이터 추가 (offer)
        queue.offer("A");
        queue.offer("B");
        queue.offer("C");

        // 데이터 추출 (poll) - 먼저 추가된 데이터부터 추출됨
        while (!queue.isEmpty()) {
            System.out.println(queue.poll());
        }
    }
}

참고로 자바스크립트에서도 stack (push, pop)와 queue(shift, unshift) 구현이 가능합니다.

profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글