컬렉션 프레임워크(Collections Framework)란?
컬렉션(Collections) : 다수의 데이터 + 프레임워크(Framework) : 표준화된 프로그래밍 방식
즉, 데이터 군을 저장하는 클래스들을 표준화한 설계라는 뜻!
*JAVA API문서에서는 컬렉션 프레임워크를 '데이터 군(group)을 다루고 표현하기 위한 단일화된 구조(architecture)'라고 정의하고 있다.
컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현된다.
컬렉션 프레임워크의 장점
- 컬렉션, 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공해준다.
- 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기 편리하다.
- 재사용성이 높은 코드를 작성할 수 있다.
컬렉션 프레임워크 핵심 인터페이스
* 인터페이스 List와 Set을 구현한 컬렉션 클래스들은 서로 많은 공통부분이 있어서, 공통된 부분을 다시 뽑아 Collection 인터페이스를 정의할 수 있었지만 Map인터페이스는 이들과는 전혀 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 못했다.
컬렉션 프레임워크에는 컬렉션데이터 그룹을 크게 3가지 인터페이스를 정의하고 있다.
인터페이스 | 특징 |
List | 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. ex) 대기자 명단 |
구현클래스 : ArrayList, LinkedLsit, Stack, Vector, Queue 등 | |
Set | 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. ex) 양의 정수집합, 소수의 집합 |
구현클래스 : HashSet, TreeSet 등 | |
Map | 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. ex) 우편번호, 지역번호(전화번호) |
구현클래스 : HashMap, TreeMap, Hashtable, Properties 등 |
- 모든 컬렉션 클래스들은 List, Set, Map 중의 하나를 구현하고 있다.
(구현한 인터페이스의 이름이 클래스의 이름에 포함되어 있어, 이름만으로도 클래스의 특징을 쉽게 알 수 있도록 되어있다!) - Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션 프레임워크가 만들어지기 이전부터 존재했기 때문에 컬렉션 프레임워크의 명명법을 따르지 않는다.
- Vector나 Hashtable과 같은 기존의 컬렉션 클래스들은 호환을 위해, 설계를 변경해서 남겨두었지만 가능하면 사용하지 않는 것이 좋음(그 대신 새로 추가된 ArrayList와 HashMap을 사용하자`ㅅ'!)
+ 실제 개발할때는 컬렉션의 특징을 파악하고 어떤 인터페이스를 구현한 컬렉션 클래스를 사용해야하는지 결정해야한다. `ㅅ'
'JAVA' 카테고리의 다른 글
[JAVA] JVM의 메모리 구조 (0) | 2023.01.26 |
---|---|
[JAVA/Collections Framework] ArrayList 예제로 보는 동작원리 (0) | 2023.01.07 |
[JAVA/Error] 자바에서 발생하는 에러와 해결방법 (0) | 2023.01.04 |
[IntelliJ/Eclipse] Getter/Setter 자동생성 하는 방법 (0) | 2023.01.02 |
[JAVA] 자바 어노테이션(Annotation) 정리 (0) | 2022.12.17 |