후입선출
LIFO ,Last Input First Output
저장소에 나중에 들어간 요소가 먼저 나온다.
ex) 메모리 구조(Stack(
ex) 되돌리기(Ctrl+Z), 다시하기(Ctrl+Y)
ex) 브라우저 > 뒤로가기, 앞으로 가기
//Stack - 클래스
Stack<String>stack = new Stack<String>();
//1. 요소 추가하기
// - T push(T value) 타입변수
stack.push("빨강");
stack.push("노랑");
stack.push("파랑");
//2. 요소 개수
//- int size()
System.out.println(stack.size()); // 결과 : 3
//3. 요소 읽기(꺼내고 바로 제거) = remove
//- T pop()
System.out.println(stack.pop());
System.out.println(stack.size()); // 결과 : 2
System.out.println(stack.pop());
System.out.println(stack.size()); // 결과 : 1
System.out.println(stack.pop());
System.out.println(stack.size()); // 결과 : 0
//System.out.println(stack.pop()); //에러! stack 비어있음
//3. 빈배열
System.out.println(stack.isEmpty());
//4. 이번에 pop()을 하면 가져오게 될 요소 미리보기
System.out.println(stack.peek());
System.out.println(stack.size()); //사이즈가 줄어들지 않음
❗ 주의 할 것 ❗
//stack.size가 줄어든다는 것을 생각해야함!
for (int i=0; i<stack.size();i++) {
System.out.println(stack.pop());
}
//결과 : 파랑 노랑
// 맞는 표현
while(stack.size() >0 ) {
System.out.println(stack.pop());
}
선입선출
FIFO ,First Input First Output
저장소에 먼저 들어간 요소가 먼저 나온다.
ex) 모든 줄 서기 = 먼저 줄 선 사람이 먼저 들어감
ex) 주문 리스트
ex) 순서가 있는 모든 목록
//1. 요소 추가하기
//- boolean add(T value) => 어레이리스트와 같음
queue.add("빨강"); //enqueue();
queue.add("노랑");
queue.add("파랑");
//2. 요소 개수
System.out.println(queue.size());
//3. 요소 읽기 (읽고 사라짐)
System.out.println(queue.poll()); //dequeue()
System.out.println(queue.size());
System.out.println(queue.poll());
System.out.println(queue.size());
System.out.println(queue.poll());
System.out.println(queue.size());
System.out.println(queue.poll()); //에러 안나고 null 돌려줌 !