Java Collection Framework

Hudson Park
5 min readSep 21, 2019

--

오늘은 자바 컬렉션 프레임워크(JCF)에 대해 알아보려 한다.

우선 JCF의 구조는 다음과 같다.

1. Set Interface의 구성

1) HashSet : 순서가 필요없는 데이터를 HashTable에 저장하며, Set 중 가장 높은 성능을 보인다.

  • List와의 비교 : list와는 달리 데이터의 정해진 순서가 없고, 중복을 허용하지 않는 특성을 가진다. 그렇기 때문에 데이터의 순서보다는 데이터의 유무를 판단하는 것에 중점을 둔 자료구조라 말할 수 있다.

2) TreeSet : 저장된 데이터의 값에 따라(a-z, 1–9) 정렬되며, Red-black tree 타입으로 값이 저장되고 HashSet보다는 성능이 느리다.

  • Red-black tree : 자가 균형 이진 탐색 트리, 복잡하지만 실 사용에서 효율적이고, 최악의 경우에도 우수한 실행 시간을 가짐- O(log N) , 리프 노드(자식 노드를 가지지 않는 노드)들은 비어있고, 자료를 가지지 않는다. 일정한 실행 시간을 보장하는 다른 자료구조를 만드는데 쓸모가 있다.

3) LinkedHashSet : 중복 데이터를 허용하지 않으며, 입력된 순서에 따라 데이터를 관리하는 특성을 가진다. 즉, 다른 Set과 달리 데이터의 순서를 보장한다.

2. List Interface의 구조

객체를 인덱스로 관리하는 자료구조

  • ArrayList : 저장 용량을 초과한 객체들이 들어오면 자동적으로 저장용량이 늘어나는 구조
  • LinkedList : 인접 참조를 링크해서 체인처럼 관리, 특정 인덱스의 객체를 제거하면 앞뒤 링크만 변경됨. 즉, 삽입/삭제가 빈번히 있을 때 쓰는 것이 효율적
  • Vector : ArrayList와 같은 구조를 갖고 있으나 동기화(Syncronized)된 메서드로 구성되어 있어 멀티 쓰레딩 구조에 안정적

3. Queue Interface의 구조

FIFO(First In First Out) 구조를 가지고 있어, 입력 순서에 따른 출력을 보장한다. ex) 최근사용문서, 버퍼

  • ArrayDeque : Dynamic Array를 이용한 Deque, 즉 ArrayList처럼 저장 용량이 늘어날 수 있는 구조이다.
  • PriorityQueue : BIFO(Best In First Out)구조를 가지고 있으며, 더 작은 작업에 높은 우선순위를 가진다.

JavaCollectionFramework에 대한 간단 정리

Reference

--

--

Hudson Park

stay hungry, stay foolish / cool head and warm heart