사용 이유
스택과 큐의 필요성 자료를 최대한 움직이지 않고, 그 안에 요소들을 저장하고 출력하기 위함이다. 값을 변경할 때마다, 그 안에 요소들이 많은 변화가 일어나면, 많은 컴퓨터 자원을 사용하여, 과부하 가능성이 있다. 보다 빠른 데이터 처리를 위해 스택과 큐를 이용한다.
스택
쌓이고 위에서 빼는 구조.
Last In First Out
- push
Stack에 객체를 저장한다.
- pop
Stack의 맨 위에 저장된 객체를 꺼낸다.
- peek
Stack의 맨 위에 저장된 객체를 반환한다. Stack에서 꺼내지는 않습니다. 비었을 때 null을 반환한다.
- empty
Stack이 비어있는지 알려준다. 있으면 true, 없으면 false를 반환한다.
- search
Stack에서 주어진 객체를 찾아서 그 위치를 반환한다. (배열과는 달리 1부터 시작한다.)
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("가");
stack.push("나");
stack.push("다");
while (!stack.isEmpty()) {
System.out.println("stack.pop() = "+stack.pop());
}
}
stack.pop() = 다
stack.pop() = 나
stack.pop() = 가
큐
대기 줄이 쌓이고, 오래 기다린 자료가 먼저 나감
First In Frist Out
- add
Queue에 객체를 저장한다.
성공하면 true, 실패하면 false를 반환한다.
- peek
삭제 없이 읽어온다. Queue가 비었을 때 null을 반환한다.
- element
삭제 없이 저장된 요소를 읽어온다. peek와 다른 점은 queue가 비었을 때 Exception을 발생한다. (peek()는 null을 반환한다.)
- offer
Queue에 객체를 저장한다. 성공하면 true, 실패하면 false를 반환한다.
- poll
Queue에서 꺼내온다. 비어있으면 null을 반환한다.
- remove
Queue에서 꺼내온다. 비어있으면 예외를 발생한다.
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
queue.add("가");
queue.add("나");
queue.add("다");
while (!queue.isEmpty()) {
System.out.println("queue.poll() = " + queue.poll());
}
}
참고 자료
'자바 자료구조 알고리즘' 카테고리의 다른 글
자바 해시 테이블 자료구조 (0) | 2023.01.15 |
---|---|
행렬의 덧셈과 뺄셈 곱셈 (0) | 2023.01.07 |