Set은 List와 달리 순서를 유지하지 않고 데이터의 중복을 허용하지 않는 자료구조로 집합을 표현하기 위해서 사용합니다. Java Collection Framework에서 Set은 Collection 인터페이스를 상속받은 인터페이스 중 하나이며 이를 구현한 클래스로는 HashSet , TreeSet , LinkedHashSet 등이 있습니다.
Java Collection Framework
HashSet은 Hash Table을 이용하여 Set을 구현한 클래스로 TreeSet, LinkedHashSet과 달리 데이터의 순서가 없어 가장 성능이 좋습니다.
TreeSet은 Red-Black Tree를 이용하여 Set을 구현한 클래스로 저장된 데이터의 값에 따라 데이터가 정렬된다는 특성을 갖고 있습니다.
LinkedHashSet은 HashSet를 상속받아 Set을 구현한 클래스로 HashSet과 달리 데이터의 저장 순서를 기록한 Linked List를 유지하고 있어 데이터 간의 순서가 존재합니다. 따라서 셋 중에서 가장 성능이 떨어집니다.
Map은 Key 와 Value 의 쌍으로 이루어진 데이터를 저장하는 자료구조로 Set처럼 데이터의 순서가 유지되지 않습니다. Key 의 중복은 허용되지 않으나 Value 의 중복은 허용됩니다. Java Collection Framework에서 Map을 구현한 클래스로는 HashMap , HashTable , TreeMap, LinkedHashMap 등이 있습니다.
HashMap은 Hash Table을 이용하여 Map을 구현한 클래스로 데이터의 순서를 유지하지 않습니다. HashTable Class와 달리 Key 와 Value 에 NULL 값이 허용되지만 Thread Safe하지 않습니다.
HashTable은 Hash Table을 이용하여 Map을 구현한 클래스로 HashMap과 달리 Key 와 Value 에 NULL 값이 허용되지 않습니다. HashMap보다 느리지만 동기화를 지원하기 때문에 Tread Safe합니다.
TreeMap은 Red-Black Tree를 이용하여 Map을 구현한 클래스로 정렬된 순서로 Key 와 Value 의 쌍을 저장하기 때문에 빠른 탐색이 가능합니다.
LinkedHashMap은 HashMap를 상속받아 Map을 구현한 클래스로 HashMap과 달리 데이터의 저장 순서를 기록한 Linked List를 유지하고 있어 데이터 간의 순서가 존재합니다.