컬렉션 프레임워크 실습 { Collection 인터페이스 - List 인터페이스 - ArrayList로 스택과 큐 구현하기 }
Ben의 프로그램2023. 7. 20. 12:23
728x90
스택과 큐란?
프로그램을 개발할 때 가장 많이 사용하는 자료구조는 stack과 queue입니다. Stack 은 상자를 쌓듯이 자료를 관리하는 방식입니다. 스택은 만 나중에 추가된 데이터를 먼저 꺼내는 LIFO(Last in First out) 방식입니다. Queue 는 '선착순'의 개념입니다. 대기열에서 먼저 추가된 데이터부터 꺼내서 사용하는 FIFO(First in First out) 방식입니다.
한편 Stack 클래스는 자바 1부터 제공했습니다. Queue 는 인터페이스로 정의되어 있고 Priority Queue 등이 구현되어 있습니다. 하지만 ArrayList나 LinkedList 클래스를 활용하여 구현하는 경우도 종종 있습니다. 자신이 직접 구현하면 사용하기 편리한 경우가 있기 때문입니다.
ArrayList로 스택 구현하기
스택은 LIFO 이었습니다. 최근 검색 목록 & 체스 게임 최근 수 무르기 등과 같은 경우에 사용됩니다. 스택에 자료를 추가하는 것을 push( ) 라고 하고, 자료를 꺼내는 것을 pop( ) 이라고 합니다. 그리고 스택에 가장 최근에 추가된 자료의 위치를 top 이라고 합니다. MyStack 클래스를 만들고 ArrayList를 생성하여 push( )와 pop( )을 간단하게 구현해보겠습니다. ArrayList 를 사용하여 stack 의 push 와 pop 메서드를 구현하였습니다.
ArrayList로 큐 구현하기
큐는 FIFO 이었습니다. 프로세스 관리, 콜 센터 등에서 활용되는 구조입니다. ArrayList 로 큐를 구현해 보겠습니다. enQueue( ) 메서드는 ArrayList 맨 뒤에 요소를 추가합니다. 큐에서 자료를 꺼내는 deQueue( ) 메서드는 ArrayList 맨 앞에 있는 요소부터 제거하고 반환합니다.