반응형
JAVA에는 해싱을 활용한 자료구조로 대표적으로 Map, Set, 2개가 존재한다. 이 자료구조들은 이전에 배웠던 자료구조와는 다르게 특수한 형태의 자료구조이며, 굉장히 유용하게 쓰이기 때문에 알아놓으면 좋을 것이다.
Map은 키(Key)와 값(Value)의 쌍으로 이루어진 데이터의 집합이다. 순서가 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
JAVA의 Map 인터페이스를 구현한 클래스는 굉장히 많지만 대표적으로 HashMap, HashTable, TreeMap, LinkedHashMap 4가지가 있다.
Hashtable
- HashMap보다는 느리지만 동기화가 지원된다.
- 키와 값으로 null이 허용되지 않는다.
HashMap
- 중복을 허용하지 않고 순서를 보장하지 않는다.
- 키와 값으로 null이 허용된다.
- Hashtable보다는 HashMap을 사용하자
TreeMap
- 이진 탐색 트리의 형태를 가진다.
- 데이터를 정렬된 순서로 저장한다. 정렬된 상태를 유지하기 위해 시간이 다소 오래 걸린다.
LinkedHashMap
- HashMap과 상당히 흡사하다.
- 데이터를 넣을 때 입력한 Key의 순서를 지키지 않는 HashMap과 달리 Key의 순서를 보장한다.
JAVA에선 간단하게 라이브러리를 추가하여 다양한 Map을 활용할 수 있다.
import java.util.Map;
import java.util.Hashtable;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;
Map<"자료형", "자료형"> "Map 이름" = new "원하는 Map 클래스"<>();
Set은 집합이다. 집합에서는 중복된 데이터를 허용하지 않는다. 이처럼 Set은 중복을 허용하지 않으며, 순서를 유지하지 않는 데이터의 집합이다.
JAVA의 Set 인터페이스를 구현한 클래스 역시 굉장히 많지만 대표적으로 HashSet, LinkedHashSet, TreeSet 3가지가 있다.
HashSet
- 순서 및 정렬을 하지 않는 가장 단순한 Set이다. 덕분에 가장 빠른 임의 접근 속도를 가진다.
LinkedHashSet
- HashSet과 흡사하다.
- 연결 리스트를 사용해서 데이터를 저장하기 때문에 Key의 순서를 보장한다.
TreeSet
- 이진 탐색 트리(레드-블랙 트리)의 형태를 가진다.
- 데이터를 정렬된 순서로 저장, 정렬된 상태를 유지하기 위해 시간이 다소 오래 걸린다.
- 정렬 방법을 지정할 수 있다.
JAVA에선 간단하게 라이브러리를 추가하여 다양한 Set을 활용할 수 있다.
import java.util.Set;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;
Set<"자료형"> "Set 이름" = new "원하는 Set 클래스"<>();
반응형
'Computer Science > 자료구조' 카테고리의 다른 글
세그먼트 트리(Segment Tree) (0) | 2021.06.30 |
---|---|
트라이(Trie) (0) | 2021.06.30 |
해싱 : Hashing (0) | 2021.06.30 |
그래프(Graph) (0) | 2021.06.30 |
우선순위 큐(Priority Queue) (0) | 2021.06.30 |
댓글