1. Queue (큐) : 선입 선출
i.e. 계산기 알고리즘??
2. Stack (스택) : 선입 후출
큐와 스택은 넣을 때도 하나씩, 꺼내올 때도 하나씩 해야한다.
public class ExecClass {
public static void main(String[] args) {
// 4. Queue
QueueTest queueTest = new QueueTest();
queueTest.doAction();
// 5. Stack
StackTest stackTest = new StackTest();
stackTest.doAction();
}
}
import java.util.Collection;
import java.util.Iterator;
import java.util.Queue;
public class QueueTest {
public void doAction() {
// Queue (선입 선출) 데이터 넣기->(Stack) (Stack)->데이터 꺼내기
Queue<Integer> qq = new Queue<Integer>() { // Queue는 Abstract 메소드라 미구현 메소드를 모두
// Override 중략
결과 :
qq.add(10);
qq.add(20);
qq.add(30);
qq.add(40);
System.out.println(qq);
System.out.println(qq.peek()); // 가장 앞의 10을 조회만 한다. Queue에는 (40, 30, 20, 10)->(넣는 방향) 이 들어있음.
System.out.println(qq.poll()); // 가장 앞의 10을 꺼낸다. Queue에는 (40, 30, 20)->(넣는 방향) 이 들어있음.
System.out.println(qq.poll()); // 그 다음 가장 앞의 20을 꺼낸다. Queue에는 (40, 30)->(넣는 방향) 이 들어있음.
}
}
import java.util.Stack;
public class StackTest {
public void doAction() {
// // Stack (선입 후출) 데이터 넣기->(Stack) 데이터 꺼내기<-(Stack)
Stack<Integer> st = new Stack();
st.add(10);
st.add(20);
st.add(30);
st.add(40);
System.out.println(st);
System.out.println("st.peek() : " + st.peek()); // 가장 뒤의 40을 조회만 한다. Stack에는 (40, 30, 20, 10)->(넣는 방향) 이 들어있음.
System.out.println(st + " <- st.peek()");
System.out.println("st.pop() : " + st.pop()); // 가장 뒤의 40을 꺼낸다. Stack에는 (30, 20, 10)->(넣는 방향) 이 들어있음.
System.out.println(st + " <- st.pop()");
System.out.println("st.pop() : " + st.pop()); // 그 다음 가장 앞의 30을 꺼낸다. Stack에는 (20, 10)->(넣는 방향) 이 들어있음.
System.out.println(st + " <- st.pop()");
}
}
결과 :
[10, 20, 30, 40]
st.peek() : 40
[10, 20, 30, 40] <- st.peek()
st.pop() : 40
[10, 20, 30] <- st.pop()
st.pop() : 30
[10, 20] <- st.pop()
'개발자 > Java' 카테고리의 다른 글
Java (자바) 실습 Spring을 이용해 DB 생성하고 밀어넣고 조회하기 (0) | 2020.05.22 |
---|---|
Java (자바) Spring, Apache Tomcat (0) | 2020.05.22 |
Java(자바) java.lang.NullPointerException 에러 (0) | 2020.05.12 |
Java (자바) 포맷팅 및 문자열 분리 예제 (0) | 2020.05.10 |
Java (자바) API (0) | 2020.05.10 |