[Java] 스택(Stack)과 큐(Queue)
- 📕 Programing/Java
- 2020. 5. 22. 15:48
📚 Stack 클래스
- Stack클래스는 List컬렉션 클래스의 Vector클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다.
- 스택메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)을 따르는 자료구조 이다.
- 가장 나중에 저장된(PUSH) 데이터가 가장 먼저 인출(POP)되는 구조이다.
메서드 | 설 명 |
boolean empty( ) | Stack 이 비어있는지 알려줌 |
Object peek( ) | Stack 의 맨 위에 저장된 객체를 반환 pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생) |
Object pop( ) | Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생) |
Object push(Object item) | Stack 에 객체( item )를 저장 |
int search(Object o) | Stack 에서 주어진 객체( o )를 찾아서 그 위치를 반환, 못 찾으면 -1 을 반환(배열과 달리 위치가 1부터 시작) |
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(4);
stack.push(2);
System.out.println(stack); // [1, 3, 4, 2]
System.out.println("peek -- " + stack.peek()); // peek -- 2
System.out.println(stack); // [1, 3, 4, 2]
System.out.println("pop -- " + stack.pop()); // pop -- 2
System.out.println(stack); // [1, 3, 4]
//비었는지 검사
System.out.println("empty -- " + stack.empty()); // empty -- false
📚 Queue 인터페이스
- 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다.
- 이러한 Queue 인터페이스를 상속받는 하위 인터페이스는 다음과 같다.
- Deque
- BlockingDeque
- BlockingQueue
- TransferQueue
- 그 중에서 Deque인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는데 가장 많이 사용된다.
- 선입선출(FIFO) 을 따르는 자료구조 이다.
- 가장 먼저 저장된(add) 데이터가 가장 먼저 인출(poll)되는 구조이다.
메서드 | 설 명 |
boolean add(Object o) | 지정된 객체를 Queue 에 추가 성공하면 true를 반환, 저장공간이 부족하면 IllegalStateException 발생 |
Object remove( ) | Queue 에서 객체를 꺼내 반환. 비어있으면 NoSuchElementException 발생 |
Object element( ) | 삭제없이 요소를 읽어옴 peek 와 달리 Queue 가 비었을때 NoSuchElementException 발생 |
boolean offer(Object o) | Queue 에 객체를 저장 성공하면 true, 실패하면 false를 반환 |
Object poll( ) | Queue 에서 객체를 꺼내서 반환. 비어있으면 null을 반환 |
Object peek( ) | 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환 |
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(4);
queue.add(2);
queue.add(3);
queue.add(1);
System.out.println(queue); // [4, 2, 3, 1]
System.out.println("peek -- " + queue.peek()); // peek -- 4
System.out.println(queue); // [4, 2, 3, 1]
System.out.println("poll -- " + queue.poll()); // poll -- 4
System.out.println(queue); // [2, 3, 1]
System.out.println("remove -- " + queue.remove()); // remove -- 2
System.out.println(queue); // [3, 1]
'📕 Programing > Java' 카테고리의 다른 글
[Java] CPU, Memory 사용량 (0) | 2020.07.23 |
---|---|
JVM(Java Virtual Machine) 내부 구조 (0) | 2020.05.29 |
배열의 선언 (0) | 2020.05.13 |
[Java] 파일 읽기/쓰기 (0) | 2019.11.28 |
[Java] File I/O (파일입출력) (0) | 2019.11.28 |