(JAVA) 컬렉션Collection(List, Set, Map)에 대해 알아보자

컬렉션 프레임워크란?

좋은 건물을 짓기 위해서는 구조를 탄탄하게 설계해둬야 하는 것처럼, 프로그램을 개발할 때에도 사용되는 자료를 어떤 구조로 관리 할 것인지가 중요해. 그래야 프로그램의 기능을 보다 효율적이고 효과적으로 구현할 수 있거든. 이 때 사용하는 것이 자료구조 인데, 필요한 자료구조를 자바에서 미리 구현하여 제공하는 것을 컬렉션 프레임워크 라고 해.

자료구조 : 프로그램 실행 중 메모리에 자료를 유지, 관리하기 위해 사용

자료구조
컬렉션 프레임워크는 Collection 인터페이스Map 인터페이스를 기반으로 이루어져 있어. Collection 인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공하고, Map인터페이스는 쌍으로 된 자료들을 관리하는 데 유용한 기능을 제공해.

각 인터페이스의 특징

인터페이스 포함 클래스 특징
List LinkedList
Stack
Vector
ArrayList
순서가 있는 데이터의 집합, 중복 허용
Set HashSet
TreeSet
순서가 없는 데이터의 집합, 중복 허용 X
Map Hashtable
HashMap
TreeMap
키와 값의 쌍으로 된 데이터의 집합.
순서 없음. 키는 중복 불가, 값은 중복 가능

인터페이스에 포함되어 있는 클래스의 특성들도 하나씩 알아보자.

List 자료구조

클래스명 특징
LinkedList - 양방향 포인터 구조로 데이터의 삽입/삭제가 잦을 경우 빠른 성능 보장
- 스택, 큐, 양방향 큐 등을 만드는 용도로 쓰임
- Iterator를 사용한다
-주로 순서가 없는 자료구조의 값들을 추출할 때 사용한다
Vector - ArrayList의 구형버전
- 모든 메소드가 동기화 되어있고, 느린 편
- 최근에는 잘 사용되지 않음
ArrayList - 크기를 마음대로 조절할 수 있는 배열
- 처리 속도가 빠른 편
-단방향 포인터 구조로 순차적으로 자료에 접근할 때 유리

참고 : List, ArrayList의 차이점과 사용법

Set 자료구조

클래스명 특징
HashSet - 가장 빠른 속도
- 순서를 예측할 수 없음
TreeSet - 정렬된 순서대로 보관. 정렬 방법을 지정할 수 있음
- HashSet보다 느림
LinkedHashSet - 저장된 순서에 따라 값이 정렬됨
- 셋중에 가장 느림

Map 자료구조

클래스명 특징
HashMap - Map인터페이스를 사용하기 위해 해시테이블을 사용한 클래스
- 중복을 허용하지 않음
- 순서를 보장하지 않음
- 키와 값으로 null 사용 가능
Hashtable - HashMap보다는 느리지만 동기화가 지원된다
-키와 값으로 null 사용 불가
TreeMap - 이진검색트리의 형태로 키와 값의 쌍으로 된 데이터를 저장
- 정렬된 순서로 키/값 쌍을 저장하므로 빠른 검색이 가능
- 저장 시 정렬(오름차순)을 하기 때문에 저장시간이 다소 오래걸린다