이번에는 LIFO와 FIFO 컬렉션입니다.
약어로 나오는 용어들은 어려워할 필요 없이 풀 스펠링을 보면 대략적인 뜻을 유추할 수 있습니다.
LIFO는 Last In First Out, 나중에 들어간 녀석이 먼저 빠져나오는 구조를 뜻하고 FIFO는 First In First Out, 먼저 들어간 녀석이 먼저 빠져나오는 구조를 뜻 합니다.
사실 말만 복잡할 뿐이지, 하나씩 들여다보면 바로 이해하실 수 있을 것입니다.
나중에 들어간 녀석이 먼저 빠져나가는 일은 우리 생활 속에서 굉장히 흔합니다.
예를 들자면 세탁된 수건을 넣어 놓는 수건통 같은 거죠! 일반적인 통들은 위는 뚫려 있고 바닥은 막혀 있는 상태 이기 때문에 넣을 땐 순서대로 넣어도 빼낼 때는 위에서부터 빼내야 합니다. 그래서 먼저(First) 들어간(In) 수건이 하나씩 뺄 때는 마지막(Last)에 빠지(Out)는 것이죠.
이렇게 차곡차곡 쌓여 있는 형태를 우리는 Stack이라고 부릅니다. 그리고 일반적으로 push라는 명령으로 집어넣고, pop이라는 명령어로 빼냅니다. 어찌 보면 상당히 불편한 형태 같지만 모두 채워 넣고 최신의 내용부터 차례로 처리할 때는 유용합니다.
선입선출, 이라는 말 들어 보셨죠?
먼저 들어온 녀석이 먼저 나간다. 이게 우리에게 가장 익숙한 방식일 것입니다. 일반적으로 우리가 줄을 설 때가 그렇죠? 버스를 타거나, 입장을 할 때 가장 먼저(First) 줄 선(In) 사람이 먼저(First) 입장(Out)을 하게 됩니다.
이러한 형태를 우리는 큐(Queue)라고 부릅니다. 사실 queue는 번역하면 대기 줄 이죠?
큐는 offer라는 명령어로 집어넣고, poll이라는 명령어로 빼냅니다. 그래서 큐는 어떤 작업을 대기시켰다가 순차적으로 처리할 때 유용 합니다.
이렇게 컬렉션 프레임워크의 컬렉션들을 알아보았는데요, 이 자료구조들이 자바의 프로그램에 있어 굉장히 유용하고 자주 쓰이는 녀석들입니다. 그래서 이 컬렉션들의 모양을 잘 기억해 두세요!