티스토리 뷰
컬렉션이란 오라클에서 다음과 같이 정의해 놓았다.
A collection is an object that represents a group of objects
즉, 객체들의 집단을 대표하는 객체라고 한다. (객체를 모아둔 자료구조라고 생각하자)
.
그럼 컬렉션 프레임워크란 무엇일까?
컬렉션을 표현하고 조작하기 위한 통합 아키텍쳐로, 다양한 데이터 구조 및 알고리즘을 구현하기 위한 인터페이스 및 클래스를 제공한다.
장점
Reduces programming effort
우리는 컬렉션의 디자인에 대해 걱정하기보다 프로그램에서 컬렉션을 잘 사용하는 방법에 대해 집중할 수 있다.
Increases program speed and quality
데이터 구조 및 알고리즘의 고성능 구현을 제공한다.
더 많은 장점은 oracle 에서 확인해보자.
Hierarchy of the Collection Framwork
Iterable Interface
전체 컬렉션의 루트 인터페이스이다.
컬렉션 인터페이스는 Iterable Interface를 구현하였다.
* Collection 인터페이스를 보면 아래와 같이 되어있음을 알 수 있다.
public interface Collection<E> extends Iterable<E> {
}
해당 인터페이스는 iterator 를 제공한다.
* Iterable 인터페이스를 보면 아래와 같이 iterator 함수가 있는 것을 확인 할 수 있다.
public interface Iterable<T> {
/**
* Returns an iterator over elements of type {@code T}.
*
* @return an Iterator.
*/
Iterator<T> iterator();
}
Collection Interface
컬렉션에 데이터를 추가, 삭제, 지우기 등과 같이 기본 메서드를 포함한다.
List Interface
특정 순서가 있으며, 중복 데이터를 허용한다.
ArraysList, LinkedList, Vector, Stack 과 같은 클래스에 의해 구현되어 있다.
Queue Interface
FIFO (First In First Out), 삽입된 순서대로 데이터를 저장하는 구조이다.
LinkedList, PriorityQueue, ArrayDequeue 와 같은 클래스에 의해 구현되어 있다.
* LinkedList는 List 도 구현할 수 있지만, Queue 로 사용할 수 있는 메서드도 있다.
Deque(Double-ended queue) Interface
Queue Interface 를 상속받은 인터페이스이다.
양방향 대기열인 이 인터페이스는 큐 양쪽 끝에서 데이터를 추가하고 제거할 수 있는 구조이다.
LinkedList, ArrayDeque 와 같은 클래스에 의해 구현되어 있다.
Set Interface
중복된 값을 저장하지 않고, 정렬되지 않으며 인덱스로 데이터를 찾지 않는 구조이다.
HashSet, TreeSet, LinkedHashSet 과 같은 클래스에 의해 구현되어 있다.
Map Interface
데이터를 key, value 로 저장하는 구조이다.
동일한 키가 여러 매핑을 가질 수 없기 때문에 중복 키를 허용하지 않는다.
HashMap, TreeMap 과 같은 클래스에 의해 구현되어 있다.
위 내용을 보면, Map 인터페이스는 Collection 상속 계층도에 포함되지 않는 것을 알 수 있다.
그 이유는 Collection 인터페이스를 상속받는 인터페이스 및 클래스들은 서로 많은 공통 부분이 있어서, 공통된 부분을 뽑아 Collection 인터페이스를 정의할 수 있었지만 Map 인터페이스는 이들과 전혀 다른 형태로 컬렉션을 다루기 때문이다.
참고
'Language > Java' 카테고리의 다른 글
이넘(Enum) (0) | 2024.10.16 |
---|---|
배열에서 메모리 접근 (0) | 2024.10.15 |
[Java] Exception (0) | 2022.11.10 |
[Java] Thread (0) | 2022.06.28 |
[Java] Stack & Queue (0) | 2022.06.27 |
- Total
- Today
- Yesterday
- object
- spring boot
- 인터페이스
- 인스턴스변수
- nginx
- Security
- nosql
- Red-Black Tree
- 추상클래스
- Spring
- 오블완
- Sticky Session
- Caching
- java
- HashMap
- 다중화
- 로드 밸런서
- Hash
- 자동구성
- 티스토리챌린지
- 정적변수
- fail-safe
- @conditional
- syncronized
- JPA
- AutoConfiguration
- fail-fast
- HashSet
- 고정 세션
- Load Balancer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |