JAVA Collection

» JAVA

Collection Freamwork

컬렉션(Collection)은 다수의 데이터, 즉 데이터 그룹을 다루는데 필요한 다양한 자료구조를 말한다.
인터페이스와 다형성을이용한 객체지향적 설계를통해 표준화되어 사용법을 이해하기 쉽고 재사용성이 높은 코드를 작성할 수 있는 장점이 있다.

💡 배열을 사용하지 않고 Collection을 사용하는 이유

배열과의 차이점은 동적 메모리 할당을 할 수 있다.

collection

인터페이스 Collection은 List, Set, Queue 인터페이스가 상속하고 있는 상위의 인터페이스이고, 각 인터페이스는 다음과 같다.
Map은 인터페이스를 상속받고 있지 않지만 Collection으로 분류한다.

인터페이스 특징
List * 데이터의 순서 있음
* 데이터 중복 허용
구현클래스: ArrayList, LInkedList, Stack, Vector 등
Set * 데이터 순서 없음
* 데이터의 중복을 허용하지 않음
* 구현클래스: HashSet, TreeSet 등
Map * 키(Key)와 값(Value)의 쌍으로 이루어진 데이터
* 데이터 순서 없음
* 키의 중복이 되지 않음
* 값의 중복 허용
* 구현클래스: HashMap, TreeMap, Hashtable, Properties 등
Queue * 처음에 저장한 데이터를 가장 먼저 꺼낸다.(FIFO)
Stack * 마지막에 저장한 데이터를 가장 먼저 꺼낸다.(LIFO)

ArrayList

기존의 Vector를 개선한 클래스. 인터페이스 List를 구현하고 있다.

  • 조회에 성능이 좋으며 순차적으로 데이터 추가/삭제가 빠르다.
  • 중간에 데이터들이 추가/삭제가 일어날 경우 느리다.
  • List 컬렉션을 여러 스레드에서 공유한다면 Thread safe하지 않다.

LinkedList

  • 중간에 데이터를 추가/삭제 처리시에 성능이 좋다.
  • 검색이 느리다.
  • 스택, 큐 등을 만들때 사용한다.

HashSet

  • 빠른 데이터 접근을 할 수 있다.
  • 순서를 예측할 수 없다.
  • Thread safe 하지 않다.

TreeSet

  • 정렬 방법을 지정할 수 있다. (기본 오름차순)
  • Thread safe 하지 않다.
  • 검색에 빠르다.
  • 이진 검색 트리

LinkedHashSet

  • 입력된 순서대로 저장한다.
  • Thread safe 하지 않다.

Hashtable

  • HashMap보다 느리지만 동기화를 지원한다.
  • null 불가
  • Thread safe 하지 않다.

HashMap

  • 데이터 추가/삭제/검색 모두 성능이 좋다.
  • 중복과 순서가 허용되지 않는다.
  • null 허용

TreeMap

  • 정렬을 가진 Map, 검색이 빠르다.
  • 이진 검색 트리