1. STACK
LIFO(LAST IN FIRST OUT) 자료구조를 구현한 클래스
- STACK은 밑이 막혀 있는 통 구조여서, 0, 1, 2를 순서대로 저장한 다음 다시 추출하려면 2부터 꺼내야 한다.- 입력 순서 0, 1, 2- 출력 순서 2, 1, 0
- 순차적 추가 삭제가 이루어지기 때문에 배열이 적합하다.
1-1. STACK 사용법
- STACK은 클래스이기 때문에 객체 생성이 가능하다.
// 사용 예제
import java.util.Stack;
public class Stack_practice {
public static void main(String[] args) {
Stack st = new Stack();
st.push("0");
st.push("1");
st.push("2");
while(!st.empty()) { // 스택이 빌 때까지 반복
System.out.println(st.pop()); // 2, 1, 0 순으로 출력됨
}
}
}
1-2. STACK 메서드
메서드 | 설명 | 예외 발생 여부 |
boolen empty() | Stack이 비어있는지 알려준다. | - |
Object peek() | Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않는다. |
Stack이 비어있을 때 사용하면 EmptyStackException 발생, 예외처리가 필요하다. |
Object pop() | Stack의 맨 위에 저장된 객체를 꺼낸다. | Stack이 비어있을 때 사용하면 EmptyStackException 발생, 예외처리가 필요하다. |
Object push(Object item) | Stack에 객체(item)를 저장한다. | - |
int search(Object o) | Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환하고, 못 찾으면 -1을 반환한다. indexOf()와 그 역할이 비슷하나 배열과 달리 0이 아닌 1부터 시작된다. | - |
2. QUEUE
FIFO(FIRST IN FIRST OUT) 자료구조에서 사용되는 메소드를 정의하고 있는 인터페이스
- QUEUE는 위아래가 모두 뚫려있는 구조여서, 저장한 순서대로 꺼낼 수 있다.
- 입력 순서 0, 1, 2
- 출력 순서 0, 1, 2
- 배열에 넣을 경우 0부터 꺼내야 하기 때문에 비효율적. LinkedList 사용이 적합하다.
2-1. QUEUE 사용법
- QUEUE는 인터페이스이기 때문에 객체 생성이 불가능하다.
- 따라서 QUEUE를 사용하기 위해서는 직접 구현하는 방법과 QUEUE가 구현되어 있는 클래스를 사용하는 방법이 있다.
- JAVA API 문서에서 찾을 수 있고, 대표적으로 LinkedList를 많이 사용한다.
// 사용 예제
import java.util.LinkedList;
import java.util.Queue;
public class Queue_practice {
public static void main(String[] args) {
Queue q = new LinkedList();
q.offer("0");
q.offer("1");
q.offer("2");
while(!q.isEmpty()) {
System.out.println(q.poll()); // 0, 1, 2 순으로 출력됨
}
}
}
1-2. QUEUE 메서드
메서드 | 설명 | 예외 발생 여부 |
boolen add(Object o) | 지정된 객체를 Queue에 추가한다. 성공하면 true를 반환 | 저장공간이 부족하면 IllegalSstateeException 발생, 예외처리가 필요하다. |
Object remove() | Queue에서 객체를 꺼내 반환 | 비어있을 때 사용하면 NoSuchElementException 발생, 예외처리가 필요하다. |
Object element() | 삭제없이 요소를 읽어온다. | peek와 달리, Queue가 비어있을 때 사용하면 NoSuchElementException 발생, 예외처리가 필요하다. |
★boolean offer(object o) | Queue에 객체를 저장. 성공하면 true, 실패하면 false를 반환 | - |
★Object poll() | Queue에서 객체를 꺼내서 반환(삭제 기능). 비어있으면 null을 반환. if(obj==null) 처리해주면 된다. | - |
★Object peek() | 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환 | - |
728x90
'이론 > 개인공부' 카테고리의 다른 글
함수형 인터페이스 (0) | 2023.01.31 |
---|---|
람다식 (0) | 2023.01.31 |
자바 스트림(Stream) (0) | 2022.12.30 |
OSI 7계층(OSI 7 Layers) (1) | 2022.08.29 |
정보처리기사 필기 (0) | 2022.04.25 |