brunch

You can make anything
by writing

C.S.Lewis

컬렉션프레임워크 - FILO, FIFO

* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.

* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.

* 그리고 이 글에서는 코드 최소한으로 다루고 있습니다.


이번에는 LIFO와 FIFO 컬렉션입니다.

약어로 나오는 용어들은 어려워할 필요 없이 풀 스펠링을 보면 대략적인 뜻을 유추할 수 있습니다.

LIFO는 Last In First Out, 나중에 들어간 녀석이 먼저 빠져나오는 구조를 뜻하고 FIFO는 First In First Out, 먼저 들어간 녀석이 먼저 빠져나오는 구조를 뜻 합니다.

사실 말만 복잡할 뿐이지, 하나씩 들여다보면 바로 이해하실 수 있을 것입니다.


LIFO


나중에 들어간 녀석이 먼저 빠져나가는 일은 우리 생활 속에서 굉장히 흔합니다.

예를 들자면 세탁된 수건을 넣어 놓는 수건통 같은 거죠! 일반적인 통들은 위는 뚫려 있고 바닥은 막혀 있는 상태 이기 때문에 넣을 땐 순서대로 넣어도 빼낼 때는 위에서부터 빼내야 합니다. 그래서 먼저(First) 들어간(In) 수건이 하나씩 뺄 때는 마지막(Last)에 빠지(Out)는 것이죠. 

이렇게 차곡차곡 쌓여 있는 형태를 우리는 Stack이라고 부릅니다. 그리고 일반적으로 push라는 명령으로 집어넣고, pop이라는 명령어로 빼냅니다. 어찌 보면 상당히 불편한 형태 같지만 모두 채워 넣고 최신의 내용부터 차례로 처리할 때는 유용합니다.


FIFO


선입선출, 이라는 말 들어 보셨죠? 

먼저 들어온 녀석이 먼저 나간다. 이게 우리에게 가장 익숙한 방식일 것입니다. 일반적으로 우리가 줄을 설 때가 그렇죠?  버스를 타거나, 입장을 할 때 가장 먼저(First) 줄 선(In) 사람이 먼저(First) 입장(Out)을 하게 됩니다. 

이러한 형태를 우리는 큐(Queue)라고 부릅니다. 사실 queue는 번역하면 대기 줄 이죠?

큐는 offer라는 명령어로 집어넣고, poll이라는 명령어로 빼냅니다. 그래서 큐는 어떤 작업을 대기시켰다가 순차적으로 처리할 때 유용 합니다. 


이렇게 컬렉션 프레임워크의 컬렉션들을 알아보았는데요, 이 자료구조들이 자바의 프로그램에 있어 굉장히 유용하고 자주 쓰이는 녀석들입니다. 그래서 이 컬렉션들의 모양을 잘 기억해 두세요!

매거진의 이전글 컬렉션프레임워크 - Map
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari