Set, List, Map은 객체를 담을 수 있는 동적크기 배열인 Collection형태로 이뤄진 인터페이스이다.

interface(인터페이스)

추상 메소드와 상수로 이뤄진 클래스.
추상 메소드를 구현해야 사용이 가능하다.

표로 간단히 Set, List, Map을 요약해보면 아래와 같다.

인터페이스 구현 클래스 특징
Set HashSet, TreeSet 순서가 없는 데이터의 집합. 중복값을 허용하지 않는다.
List LinkedList, Stack, Vector, ArrayList 순서가 있는 데이터의 집합. 중복값을 허용한다.
Map HashMap, TreeMap, HashTable, Properties Key와 Value의 쌍으로 이뤄진 데이터의 집합. 순서는 없으며 Key는 중복을 허용하지 않고 Value는 중복을 허용한다.

List

Collection 인터페이스를 확장한 자료형으로 각 원소들의 순서를 저장해 Index를 사용하여 특정 위치에 원소를 삽입하거나 특정 위치에 접근할 수 있다.

ArrayList

  • 검색 속도가 빠르고 크기가 자동으로 늘어나기 때문에 유연하게 사용할 수 있다.
  • 단방향 포인터 구조로 자료에 순차적으로 접근할 때 좋다.

Vector

  • ArrayList의 구형버전으로 잘 사용하진 않는다.

LinkedList

  • 양방향 포인터 구조로 데이터를 중간에 삽입하거나 삭제가 빈번할 때 좋다.
  • 스택, 큐, 양방향 큐 등을 만들 때 주로 사용한다.

Set

중복된 요소를 포함할 수 없는 집합이다. List와 다르게 Index를 사용하지 않기 때문에 Index 매개변수가 없다.

HashSet

  • 순서를 전혀 예측할 수 없다.
  • 임의로 접근했을 때 접근 속도가 가장 빠르다.

LinkedHashSet

  • 추가된 순서나 최근에 접근한 순서대로 접근이 가능하다.

TreeSet

  • 정렬된 순서대로 보관하고, 정렬 방법을 지정할 수 있다.

Map

Key와 Value의 쌍으로 연관지어 저장하는 객체이다.

HashMap

  • 중복을 허용하지 않고 순서를 보장하지 않는다.
  • 키와 값에 대해 NULL이 허용된다.

HashTable

  • HashMap 보다는 느리지만 동기화가 지원된다.
  • 키와 값에 대해 NULL이 허용되지 않는다.

TreeMap

  • 이진 검색 트리의 형태이다.
  • 정렬된 순서로 키/값 쌍을 저장해 빠른 검색이 가능하다.
  • 저장 시에 정렬을 하기 때문에 저장 시간이 오래 걸린다.

LinkedHashMap

  • HashMap과 형태가 비슷하다.
  • Map에 있는 쌍들의 연결 리스트로 유지되어 입력한 순서대로 반복이 가능하다.