컬렉션 프레임 워크란?
컬렉션 프레임워크(Collection Framework)는 여러 데이터들의 집합을 의미하는 컬렉션과 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조인 프레임워크가 합쳐진 말입니다.
컬렉션 프레임워크는 특정 자료 구조에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 등의 동작을 수행하는 편리한 메서드들을 제공해 줍니다.
배열과 비슷한 동작을 하지만, 배열은 크기가 고정되어 있는 데에 반해, 컬렉션 프레임 워크는 가변적인 크기를 갖는 (Resizable) 특징을 갖습니다. 이러한 이점으로 개발자는 배열보다는 적절한 컬렉션 클래스를 선택해 사용하는 것을 권장합니다.
컬렉션 프레임워크의 장점
컬렉션 프레임 워크의 장점은 아래와 같습니다.
- List, Queue, Set, Map 등의 interface를 제공하고, 이를 구현하는 Class를 제공하여 일관된 API를 사용할 수 있습니다.
- 가변적인 저장 공간을 제공합니다.
- 자료구조, 알고리즘을 구현하기 위한 코드를 직접 작성할 필요 없이, 이미 구현된 컬렉션 클래스를 목적에 맞게 선택하여 사용하여 편리합니다.
- 제공되는 클래스의 코드는 검증되었으며, 고도로 최적화되어 있습니다.
컬렉션 프레임워크의 구성요소
컬렉션 프레임 워크는 아래의 세 가지 요소로 구성되어 있습니다.
- 인터페이스 (Interfaces): 각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스(List, Set, Map 등). 클래스는 인터페스를 구현하는 방식으로 작성되었기 때문에 일관되게 작성할 수 있습니다.
- 클래스 (Classes) : 컬렉션 별 인터페이스 구현 (Implementation). 목적에 따라 이미 구현된 컬렉션 클래스를 사용할 수 있습니다.
- 알고리즘 (Algorithms): 컬렉션이 제공하는 연산, 검색, 정렬, 셔플 등에 대한 메서드가 존재합니다.
컬렉션 프레임워크의 종류
컬렉션 프레임워크는 아래와 같이 크게 네 가지로 분류할 수 있습니다.
- 리스트 (List): 인덱스 순서로 요소를 저장합니다. 중복된 데이터를 저장할 수 있습니다.
- 큐 (Queue): 데이터가 저장된 순서대로 출력되는 선입선출 (FIFO: First In First Out)의 구조를 갖는 선형 자료 구조입니다.
- 집합 (Set): 순서가 없으며, 데이터를 중복하여 저장할 수 없습니다. 집합 연산 (합집합, 교집합, 차집합 등)을 지원합니다.
- 맵 (Map): Key-Value 쌍으로 데이터를 저장합니다. 순서가 존재하지 않으며, Key는 중복될 수 없습니다.
컬렉션 프레임워크의 구조
컬렉션 프레임 워크는 위와 같은 구조로 이루어져 있습니다.
대표적으로 List, Queue, Set, Map 인터페이스로 구성되어 있습니다. 세부적으로는 여러 클래스가 해당 인터페이스를 구현하거나, 다른 인터페이스가 상속받는 구조로 되어있습니다.
이중 Map은 인터페이스 구조상 특징이 다릅니다. 그 때문에 List, Queue, Set과 달리 Collection을 상속받지 않는 모습을 볼 수 있습니다.
이번 글을 통하여 컬렉션 프레임 워크에 대해 공부하여 보았습니다.
각 인터페이스와 이를 상속받은 클래스에 대한 내용은 글이 길어 나누어 작성하게 되었습니다
Reference
'JAVA' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크(Collection Framework) - Set <E> (3) (0) | 2023.03.10 |
---|---|
[JAVA] 컬렉션 프레임워크(Collection Framework) - List <E> (2) (0) | 2023.03.09 |
[JAVA] 예외 처리(Exception Handling) (0) | 2023.03.08 |
[JAVA] 제네릭(Generic) (0) | 2023.03.07 |
[JAVA] 열거형(enum) (0) | 2023.03.06 |