반응형
Queue와 Stack을 알아보려고 한다.
Queue(큐)
Queue는 FIFO First in First Out 구조로, 먼저 들어간 데이터를 먼저 꺼내는 방식이다.
- 데이터를 일시적으로 쌓아두기 위한 자료구조
- 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행
- 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행
- 그래프의 넓이 우선 탐색(BFS)에서 사용
- 버퍼링(담아놓고 순차적으로)
Enqueue : 큐 맨 뒤에 데이터 추가
Dequeue : 큐 맨 앞쪽의 데이터 삭제
Queue Method
메서드 | 설 명 |
add( ) | 객체 추가 성공 : true, 실패(저장공간이 부족 등) IllegalStateException 발생 |
remove( ) | 객체삭제 비어있으면 NoSuchElementException 발생 |
element( ) | 삭제없이 요소를 읽어옴 peek 와 달리 Queue 가 비었을 때 NoSuchElementException 발생 |
offer( ) | 객체 추가 성공 : true, 실패 : false |
poll( ) | 객체를 꺼내서 반환. Queue isEmpty? => null 반환 |
peek( ) |
삭제없이 요소를 읽어옴. Queue isEmpty? => null 반환 |
반대로
Stack(스택)
Stack은 LIFO Last in First Out 구조로, 가장 나중에 들어간 데이터를 먼저 꺼내는 방식이다.
- 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 사용
- 그래프의 깊이 우선 탐색(DFS)에서 사용
- 재귀적(Recursion) 함수를 호출 할 때 사용
메서드 | 설 명 |
empty( ) | Stack 이 비어있는지 확인 |
peek( ) | Stack 의 맨 위에 저장된 객체를 반환 pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생) |
pop( ) | Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생) |
push( ) | 객체( item )를 입력 |
search( ) | Stack 에서 주어진 객체( o )를 찾아서 그 위치를 반환, 못 찾으면 -1 을 반환(배열과 달리 위치가 1부터 시작) |
contains(int value) |
Stack에서 값을 찾는다.(있는지 존재 여부) |
반응형
'Java > Basic' 카테고리의 다른 글
[Java-Basic] JVM 메모리구조 및 개념 (0) | 2021.05.21 |
---|---|
[Java-Basic] Reflection API 편리하게 사용하여 Vert.x Verticle 사용하기 (0) | 2021.04.23 |
[Java/Basic] Daemon Thread란? 백그라운드 실행데몬? (0) | 2021.04.13 |
[Java/Basic] Thread run과 start의 차이 (0) | 2021.04.12 |
[Java] Builder Pattern이란? 객체 생성 방법들 (0) | 2021.03.19 |