컬렉션(Collection)이란?
- 자바에서 '목록성 데이터를 처리하는 자료구조' 를 통칭
* 자료구조 : 어떤 정보를 담는 것 의미, 하나의 데이터가 아닌 여러 데이터를 담을 때 사용하는 것
( 배열이 가장 기본적인 자료구조, DTO 또한 자료를 뽑는 하나의 방식 )
- 다수의 데이터를 다루는데 표준화된 클래스들을 자료구조를 직접 구현하지 않고 편하게 사용 가능함
- 배열과 다르게 객체를 보관하기 위한 공간을 미리 정의하지 않아도됨 -> 객체의 수를 동적으로 할당 가능하므로 효율성 증대
JCF(Java Collections Framework)
- 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)하기 위해서 사용하는 라이브러리
- 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
JCF 장점
- 구현되어 있는 것을 사용함으로써 코딩 시간 감소
- 검증되어 있기 때문에 코드 품질 보장
- JDK에 포함된 컬렉션 프레임워크들을 사용하여 코드 유지보수 시간 감소
- 재사용 가능하고 상호 운용성 보장
JAVA Collection Framework 인터페이스
- List, Set, Queue로 크게 3가지 상위 인터페이스로 분류
- Map 같은 경우, Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류
> 인터페이스 | List | Set | Map |
- 순서 있는 데이터의 집합 - 데이터의 중복 허용 |
- 순서를 유지하지 않는 데이터 집합 - 데이터 중복 허용하지 않음 |
- key와 value의 쌍으로 이루어진 데이터 집합 - 키는 중복을 허용하지 않고 순서를 유지하지 않음 |
|
구현 클래스 | ArrayList - 단방향 포인ㅇ터 구저 - 각 데이터에 대한 인덱스를 가짐 - 검색에 적합 - 삽입, 삭제 시 데이터 이후 모든 데이터가 복사 됨으로 빈번한 경우에는 부적합 LinkedList - 양방향 포인터 구조 - 데이터의 삽입, 삭제 시 해당 노드의 주소지만 바꾸면 되므로 삽입, 삭제가 빈번한 데이터에 적합 - 처음부터 노드 순회하므로 검색에는 부적합 - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임 vector - 과거에 대용량 처리를 위해 사용 - 내부에서 자동으로 동기화처리 일어나 비교적 성능이 좋지 않고 무거워서 잘 안쓰임 |
HashSet - 해싱을 이용하여 구현 - 가장 빠른 임의 접근 속도 - 순서를 예측 불가능 TreeSet - 이진탐색트리를 이용하여 구현 - 정렬방법을 지정 가능 LinkedHashSet - 들어간 순서를 유지하는 집합 |
Hashtable - HashMap 보다는 느리지만 동기화 지원 - null 값 불가 HashMap - 순서대로 저장이 되지 않음 - null 값 가능 TreeMap - 정렬된 순서대로 키와 값을 저장하여 검색이 빠름 LinkedHashMap - 순서대로 저장됨 - containsKey / containsValue : key와 value가 포함되어 있는지 알려준다 - put : key, value 형태로 set에 저장 - get : 지정된 key값을 반환 - size() : 개수 반환 |
'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글
가비지 컬렉션이란? (0) | 2021.06.07 |
---|---|
제너릭이란? (0) | 2021.05.31 |
static이란? (0) | 2021.05.31 |
JAVA 변수 초기화 순서 (0) | 2021.05.31 |
멤버변수 VS 클래스변수 (0) | 2021.05.31 |