🥉 LIFO (Last In First Out) / 후입선출 구조
일단 개념적으로 봤을때 스택(stack)의 의미는 쌓아 올린다는 뜻이다. 즉, 자료구조 중 스택은 자료를 하나씩 쌓아 올리고 제거를 위해서 위에서부터 하나씩 제거해야한다.
스택에서는 자료를 삽입하는 연산을 push 라고 하며 삭제하는 연산은 pop이라고 지칭된다.
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.pop();
stack.clear(); // stack의 전체 값 제거
stack.peek(); // stack의 가장 상단의 값 출력
List를 이용한 stack 구현
n_list = [1,2,3]
n_list.append(1)
출력 : [1,2,3,1]
n_list = [1,2,3]
n_list.pop()
출력 : [1,2]
🥇 FIFO (First In First Out) / 선입선출 구조
Queue의 개념은 줄, 줄을 서서 기다리는 것이며 우리가 보통 알바를 할때 선입선출, 먼저 들어온것이 먼저 나가야 하는 형태를 말하고 있다.
Queue<Integer> queue = new LinkedList<>();
queue.offer(1); // 값 추가
queue.offer(2);
queue.offer(3);
queue.poll(); // queue에 첫번째 값을 반환하고 제거, 비어있다면 null
queue.remove(); // 값 제거
queue.clear(); // queue 초기화
queue.peek(); // queue의 첫번째 값 참조
List를 이용한 Queue 구현
n_list = [4, 5, 6]
n_list.append(7)
n_list.append(8)
출력 : [4, 5, 6, 7, 8]
queue.pop(0) # pop(0)을 이용하여 deQueue를 구현
>>> 4
출력 : [5, 6, 7, 8]
서비스에서 캐싱을 구현하면서 Queue와 같이 캐싱 전략을 설계하여 구현하였었는데, 이는 해당 서비스에서 알맞은 전략을 통해 구현해야만 서비스에 오류나 데이터의 불일치성을 최소화 할 수 있다.