본문으로 바로가기

[Java] 컬렉션 프레임웍(Collection Framework)

category Language/Java 2020. 1. 22. 03:40

1. 컬렉션 프레임웍이란?

데이터 군을 저장하는 클래스들을 표준화한 설계를 뜻한다.

  • 컬렉션: 데이터 그룹, 다수의 데이터
  • 프레임웍: 표준화된 프로그래밍 방식

컬렉션 프레임웍은 컬렉션, 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공한다.

인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화 되어 있기 때문에

편리하고 재사용성 높은 코드를 작성할 수 있다.

 

2. 핵심 인터페이스

인터페이스간의 상속 계층도

List와 Set을 구현한 컬렉션 클래스들은 서로 공통부분이 있어서

공통된 부분을 다시 뽑아 Collection 인터페이스를 추가 정의했다.

Map 인터페이스는 이들과 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 못했다.

3. 특징

인터페이스 특징
List

순서가 있는 데이터의 집합, 데이터의 중복을 허용

예) 대기자 명단

구현클래스: ArrayList, LinkedList, Stack, Vector 등
Set

순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음

예) 양의 정수집합, 소수의 집합

구현클래스: HashSet, TreeSet 등
Map

키(Key)와 값(value)의 쌍으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용

예) 우편번호, 지역번호, 전화번호 .. 

구현클래스: HashMap, TreeMap, HashTable, Properties 등

Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션프레임웍이 만들어지기 이전부터 존재하던 것이기 때문에 컬렉션 프레임웍 명명법을 따르지 않는다.

 

Vector나 Hashtable과 같은 기존의 컬렉션들은 호환을 위해 남겨두었지만 가능한 사용하지 않는 것이 좋다.

대신 새로 추가된 ArrayList와 HashMap을 사용하자.

 

1) List 인터페이스

  • LinkedList
    - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
    - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임

  • Vector
    - 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음

  • ArrayList
    - 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남

2) Set 인터페이스

  • HashSet
    - 가장빠른 임의 접근 속도
    - 순서를 예측할 수 없음

  • TreeSet
    - 정렬방법을 지정할 수 있음

3) Map 인터페이스

  • Hashtable
    - HashMap보다는 느리지만 동기화 지원
    - null불가

  • HashMap
    - 중복과 순서가 허용되지 않으며 null값이 올 수 있다.

  • TreeMap
    - 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름

'Language > Java' 카테고리의 다른 글

[Java] Map 컬렉션  (0) 2020.01.23
[Java] 리스트 컬렉션 (List Collection)  (0) 2020.01.23
[Java] toString()과 String.valueOf()  (0) 2020.01.18
[Java] 추상클래스(abstract class)  (0) 2020.01.18
[Java] 제어자  (0) 2020.01.18