JCF( Java Collections Framework )
회사 내에서 스터디를 시작하면서,
아무런 사전적으로 공부한게 없이 바로 내부적인 스터디를 들어가버리니 개인적으로 너무 날코딩? 비슷한 개념없이 코딩을 하던게 스스로를 표현하고 있는 것 같아 다시금 하나하나 공부하기로 맘먹고 정리를 시작하려고한다.
책 1페이지 펴자마자 무슨단어인지 몰라 정리한다.
요 최근 하루하루가 벗고다니는것마냥 부끄러운 나날이다, 얼른 많은 지식을 얻어야하겠다 필드에서 뛰는것과 연구소의 일은 참 다른것 같다.
개인적인 사설은 각설하고 정리시작.
1. Collection
Java에서 Collection이란 데이터의 집합, 그룹을 의미한다고 한다. ( 자세한 구조는 아래의 이미지를 참고 )
Collection에는 list / set이 존재하고, 이에 해당하는 상속구조들을 표현하고 있다.
interface로는 List / Set / Queue로 존재한다는데,
이후 Queue와 Stack에 대해서도... 구분지어서 설명하도록 하겠다.
또한 Map도 Collection으로 구분한다 하니 이를 확인하도록 하자.
2. Collection 인터페이스의 특징
인터페이스 |
구현클래스 |
특징 |
Set |
HashSet TreeSet |
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. |
List |
LinkedList Vector ArrayList |
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. |
Queue |
LinkedList PriorityQueue |
List와 유사 |
Map |
Hashtable HashMap TreeMap |
키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로, 순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다. |
1) Set 인터페이스
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
- HashSet
- 가장빠른 임의 접근 속도
- 순서를 예측할 수 없음 - TreeSet
- 정렬방법을 지정할 수 있음
2) List 인터페이스
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
- LinkedList
- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
- 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임 - Vector
- 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음 - ArrayList
- 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남
3) Map 인터페이스
키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,
순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.
- Hashtable
- HashMap보다는 느리지만 동기화 지원
- null불가 - HashMap
- 중복과 순서가 허용되지 않으며 null값이 올 수 있다. - TreeMap
- 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름
현재 위 내용은 떠돌아다니는 내역을 발췌하였는데, 중요하게 봐야할껀.. HashMap / ArrayList / LinkedList 인 것 같다.