개발자 기술 면접 준비/정리

Collection란?

ucong 2021. 5. 31. 20:09

컬렉션(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