본문 바로가기

JAVA

[JAVA/Collections Framework] 컬렉션 프레임워크 개념

컬렉션 프레임워크(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을 사용하자`ㅅ'!)

 

+ 실제 개발할때는 컬렉션의 특징을 파악하고 어떤 인터페이스를 구현한 컬렉션 클래스를 사용해야하는지 결정해야한다. `ㅅ'