1. Queue Interface
- Queue는 처리를 위해 요소를 보관하는 컬렉션입니다.
- 기본적인 Collection 연산 외에도 추가적인 삽입, 삭제, 검사 연산을 제공합니다.
기본 연산
요소 추가
- add(e)
- 큐의 용량 제한을 위반할 경우 IllegalStateException을 던집니다.
- offer(e)
- 용량 제한이 있는 큐에서만 사용하기 위한 것
- 요소를 삽입하지 못했을 때 false를 반환합니다.
요소 반환
- remove(), poll()
- 큐의 앞쪽 요소를 제거하고 반환합니다.
요소 확인
- element(), peek()
- 요소를 제거하지 않습니다.
특징
정렬
- 대개 FIFO(First-In-First-Out) 방식으로 요소를 정렬
- 우선순위 큐는 요소의 값을 기준으로 요소를 정렬합니다.
LinkedList
- Queue를 구현하는 특별한 경우로
- null 요소를 허용합니다.
- poll과 peek 메서드에서 특별한 반환 값으로 사용됨
- 가능하면 null 요소를 추가하는 것은 피하는 것이 좋습니다.
Queue
- 블로킹 큐 메서드 정의 X
- 블로킹 큐 메서드들은 java.util.concurrent.BlockingQueue 인터페이스에 정의되어 있습니다.
2. The Deque Interface
double-ended-queue
- 양쪽 끝에서 요소의 삽입, 제거, 조회를 지원하는 구조입니다.
- LIFO(Last-In-First-Out, 스택)와 FIFO(First-In-First-Out, 큐) 방식 모두로 사용할 수 있습니다.
- 스택과 큐의 동작을 동시에 구현할 수 있습니다.
구현체
- ArrayDeque
- LinkedList
기본 연산
삽입
- addFirst(), offerFirst(): Deque의 시작 부분에 요소를 삽입합니다.
- addLast(), offerLast(): Deque의 끝 부분에 요소를 삽입합니다.
제거
- removeFirst(), pollFirst(): Deque의 시작 부분에서 요소를 제거합니다.
- removeLast(), pollLast(): Deque의 끝 부분에서 요소를 제거합니다.
조회
- getFirst(), peekFirst(): Deque의 시작 부분의 요소를 조회합니다.
- getLast(), peekLast(): Deque의 끝 부분의 요소를 조회합니다.
3. Map Interface
- 고유식별자로 객체를 검색할 수 있는 집합
- 각 entry는 key-value 형식의 쌍으로 저장
연산
기본
- put (추가)
- get (검색)
- remove (삭제)
- containsKey (특정 키의 존재 여부 확인), containsValue (특정 값의 존재 여부 확인)
- size (항목 수 얻기), isEmpty (맵이 비어 있는지 확인)
대량
- putAll (한 맵에서 다른 맵으로 모든 매핑 복사)
- clear (모든 매핑 제거)
컬렉션 뷰
- keySet(): 모든 키의 집합을 반환합니다.
- values(): 모든 값의 컬렉션을 반환합니다.
- entrySet(): 모든 키-값 쌍의 집합을 반환합니다.
종류
HashMap
- 순서를 유지하지 않습니다.
TreeMap
- 키를 기반으로 순서를 유지합니다.
LinkedHashMap
- 삽입 순서를 유지합니다.
4. Object Ordering
Comparator
- 객체들의 순서를 정의하고 싶을 때 사용하는 인터페이스입니다.
- 객체들이 자연스러운 순서(Comparable 인터페이스에 정의된 순서)가 없거나, 다른 순서로 정렬하고 싶을 때 사용
compare()
public interface Comparator<T> {
int compare(T o1, T o2);
}
- 두 객체를 비교하여 정수를 반환
- 값이 작을수록 우선순위가 높습니다.
- 작으면 음수, 같으면 0, 크면 양수
- 비교하려는 두 객체 중 하나가 Comparator에 적절하지 않은 타입이라면 ClassCastException이 발생합니다.
출처
'Java' 카테고리의 다른 글
[Java] Stream (2) | 2023.10.22 |
---|---|
[Java][Tutorial] 3-3. Collections: Aggregate Operations (0) | 2023.10.20 |
[Java][Tutorial] 3-1. Collections: Collection, Set, List (2) | 2023.10.15 |
[Java][Tutorial] 2-1. Essential Java Classes: Exceptions (0) | 2023.10.15 |
[Java][Tutorial] 1-4. Learning the Java Language: Annotation (0) | 2023.10.15 |