1. Stack
1) LIFO (후입선출, Last In First Out) : 나중에 넣은 객체가 먼저 빠져나가는 자료 구조.
2) LIFO 자료구조를 구현한 클래스로 Stack 을 응용한 대표적인 예가 JVM 스택 메모리.
3) 스택의 활용 예시) 수식 계산, 수식 괄호 검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로
Stack 구조
4) 주요 메서드
리턴타입 | 메서드 | 설명 |
boolean | empty() | 스택이 비어있는 지 알려줌. |
Object | push(Object item) | 주어진 객체(item)를 스택에 넣음. |
Object | peek() | 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거하지는 않음. |
Object | pop() | 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거함. |
int | search(Object o) | 스택에서 주어진 객체(o)를 찾아서 그 위치를 반환. 못찾으면 -1 반환. (배열과 달리 위치는 0이 아닌 1부터 시작함) |
5) Stack 객체 생성
Stack<E> stack = new Stack<E>();
2. Queue
1) FIFO (선입선출, First In First Out) : 먼저 넣은 객체가 먼저 빠져나가는 자료 구조.
2) 큐의 활용 예시) 최근 사용 문서, 인쇄작업 대기목록
3) Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList 임.
Queue 구조
4) 주요 메서드
리턴타입 | 메서드 | 설명 |
boolean | offer(Object o) | 주어진 객체를 큐에 저장. 성공하면 true 반환. |
boolean | add(Object o) | 주어진 객체를 큐에 추가. 성공하면 true 반환. 저장공간이 부족하면 예외 발생.(IllegalStateException) |
Object | poll() | 큐에서 객체를 꺼내 반환. 객체를 큐에서 제거함. 비어있으면 null 반환 |
Object | remove() | 큐에서 객체를 꺼내 반환. 객체를 큐에서 제거함. 비어있으면 예외 발생 (NosuchElementException) |
Object | peek() | 객체 하나를 가져옴. 객체를 큐에서 제거하지는 않음. 비어있으면 null 반환 |
Object | element() | 삭제 없이 요소를 읽어옴. 비어있으면 예외 발생. (NosuchElementException) |
5) Queue 는 인터페이스 이기 때문에 객체 생성이 안되고, Queue를 구현한 클래스를 사용해야 함.
Queue 를 구현한 클래스들 (Java API)
6) Queue 인터페이스를 구현한 클래스 LinkedList
Queue<E> queue = new LinkedList<E>();
참고 : [한빛미디어] 이것이 자바다 (신용권의 Java 프로그래밍 정복) Chapter 15.컬렉션 프레임워크
참고 : [도우출판] JAVA의 정석(3ND EDITION)-자바의 정석 최신 Java 8.0 포함 Chapter 11.컬렉션 프레임워크
'JAVA' 카테고리의 다른 글
Java - 열거 (enum) (0) | 2022.11.21 |
---|---|
JAVA - Stream (스트림) (0) | 2022.10.29 |
Java - Arrays 클래스 (0) | 2022.10.29 |
Java - 다형성, instanceof (0) | 2022.10.29 |
Java - 제네릭스 (Generics) (0) | 2022.10.29 |
댓글