* 컬렉션 프레임워크(자료구조를 구현한 라이브러리)
크기가 고정되어 있지 않고, 여러 객체를 담을 수 있는 라이브러리.
Iterator
└ Collection
├ List
│ ├ ArrayList
│ ├ LinkedList
│ ├ Vector
│
├ Set
│ ├ HashSet
│ ├ LinkedHashSet
│ ├ TreeSet
│
├ Queue
├ LinkedList
├ PriorityQueue
★ List
★ Set
★ Stack(List에 포함되는건 아님, List를 확장하여 구현), Queue
1. Stack이란?
주로 일상생활에서 "스텍을 쌓는다" 라는 말로 많이 쓰이는데, 스텍을 순서대로 쌓으며 후입선출 구조를 가진다.
top(윗부분)을 통해 삽입하는 연산을 'push' , 삭제하는 연산을 'pop'이라고 한다.
# Stack 사용 예시
- 웹 브라우저의 뒤로 가기 기능 (=마지막에 사용한 브라우저로 가기)
- 웹 애플리케이션에서 히스토리 관리(=마지막에 사용한 히스토리로 가기)
* stack은 Stack<>()을 통하여 구현
* 등록 : push()
* 삭제 : pop()
Stack<String> stack = new Stack<>(); // 스택 생성
stack.push("첫 번째"); // "첫 번째" 요소 추가
stack.push("두 번째"); // "두 번째" 요소 추가
System.out.println(stack.pop()); // "두 번째" 삭제하고 출력
System.out.println(stack.pop()); // "첫 번째" 삭제하고 출력
1. Queue란?
예시로 LOL에서 "큐를 돌린다"라고 하는데, 큐를 돌리고 매칭이 되는 순서 --> 먼저 큐를 돌린 사람 기준으로 매칭이 됨
즉, 선입선출 구조를 가짐
# Queue 사용 예시
- 프린터 대기열(출력 요청을 순차적으로 처리 / 우선 요청한 요청부터 처리)
- 작업 스케줄링(서버에서 들어오는 요청은 큐를 사용하여, 요청 순서대로 처리)
* 주로 LinkedList<>()를 사용하여 구현
* 등록 : offer()
* 삭제 : poll()
Queue<String> queue = new LinkedList<>(); // LinkedList를 사용하여 Queue 생성
queue.offer("첫 번째"); // 큐에 "첫 번째" 삽입
queue.offer("두 번째"); // 큐에 "두 번째" 삽입
System.out.println(queue.poll()); // 첫 번째 요소인 "첫 번째"를 삭제하고 출력
System.out.println(queue.poll()); // 두 번째 요소인 "두 번째"를 삭제하고 출력
System.out.println(queue.poll()); // 큐가 비어 있으므로 null 출력
🎶 스택과 큐의 실행결과
* Map(컬렉션 프레임워크 아님)
'Java 기초(복습용)' 카테고리의 다른 글
자료구조) HashTable이란? (0) | 2025.02.21 |
---|---|
Java) 자바 실행 순서 (0) | 2025.02.18 |
java) .length vs .length() vs .size() (0) | 2025.02.15 |
java) interface, Mock, JUnit + Mockito (1) | 2025.02.15 |
java 기초) 상속(Inheritance)과 다형성(Polymorphism) (1) | 2025.02.09 |