728x90
반응형
스택 Stack
- 한 쪽(TOP)에서 데이터의 추가/삭제가 발생하는 구조
- 먼저 들어간 객체가 마지막에 나오는 구조(First In Last Out) 마지막에 들어간 객체가 먼저 나오는 구조(Last In First Out) 후입선출 구조
- 주로 응용프로그램의 undo/redo, 웹브라우저의 뒤로/앞으로 기능을 2개의 Stack(backward, forward)으로 구현
Stack stack = new Stack();
// push(Object o) : 데이터를 스택에 추가
stack.push("1 - www.itwillbs.co.kr");
stack.push("2 - www.naver.com");
stack.push("3 - www.oracle.com");
// Object peek() : 맨 위의 객체 리턴
System.out.println("스택 맨 위의 객체(peek) : " + stack.peek());
System.out.println("스택 맨 위의 객체(peek) : " + stack.peek());
System.out.println("스택 맨 위의 객체(peek) : " + stack.peek());
// Object pop() : 맨 위의 객체 리턴
System.out.println("스택 맨 위의 객체(pop) : " + stack.pop());
System.out.println("스택 맨 위의 객체(pop) : " + stack.pop());
System.out.println("스택 맨 위의 객체(pop) : " + stack.pop());
// 더 이상 꺼낼 객체가 없을 경우 예외 발생
// System.out.println("스택 맨 위의 객체(peek) : " + stack.peek());
// System.out.println("스택 맨 위의 객체(pop) : " + stack.pop());
System.out.println("스택 객체가 비어있는가? " + stack.isEmpty());
// isEmpty() 메서드 결과가 false 일 때만 꺼내기 수행
if(!stack.isEmpty()) {
System.out.println("스택 맨 위의 객체(pop) : " + stack.pop());
}
Queue(큐)
- 양 끝단에서 데이터 삽입/삭제가 따로 일어나는 구조 한 쪽에서 offer() 로 삽입, 반대쪽에서 poll() 로 삭제(꺼내기)
- 구현체 클래스 : LinkedList LinkedList 클래스는 Queue 와 List 인터페이스 모두 구현
- 은행 업무 번호표, 최근 문서 구현하는데 사용
Queue q = new LinkedList();
// offer(Object o) : 데이터 추가
q.offer("1 - Ex.java");
q.offer("2 - main.jsp");
q.offer("3 - index.html");
System.out.println("최근 문서 목록 : " + q);
System.out.println("가장 오래된 문서 : " + q.peek());
System.out.println("가장 오래된 문서 : " + q.peek());
System.out.println("가장 오래된 문서 제거 : " + q.poll());
System.out.println("가장 오래된 문서 제거 : " + q.poll());
System.out.println("가장 오래된 문서 제거 : " + q.poll());
// 실제 사용 시 Queue 의 크기를 제한해두고
// offer() 로 삽입할 때 Queue 크기가 다 찼을 경우
// 가장 먼저 삽입된 객체를 제거한 후 삽입
int MAX_QUEUE_SIZE = 5;
if(q.size() >= MAX_QUEUE_SIZE) {
q.poll();
}
q.offer("4 - a.jpg");
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
한 줄로 ArrayList 초기화 (0) | 2021.06.02 |
---|---|
[JAVA] 자바의 제네릭 Generic (0) | 2021.01.19 |
[JAVA] 자바 컬렉션 프레임워크 - Map 편 (0) | 2021.01.19 |
[JAVA] 자바 컬렉션 프레임워크 - List 편 (0) | 2021.01.19 |
[JAVA] 자바 컬렉션 프레임워크 - Set 편 (0) | 2021.01.19 |