자료구조 Set과 Map 비교, Graph와 Tree 차이
12 Jan 2021
Set
- Set이란 데이터의 집합
- List와 달리 중복을 허용하지 않음
Set의 종류 in Java
- HashSet
- TreeSet
- Binary Search Tree 구조
- 추가와 삭제에는 시간이 좀 더 걸리지만, 정렬 및 탐색에 성능이 좋음
- 오름차순을 데이터를 저장
- LinkedHashSet
Map
- Map이란 Key와 Value로 이뤄진 데이터의 집합
- Key의 중복은 허용되지 않고, Value의 중복은 가능하다.
Map의 종류 in Java
- HashMap
- 순서를 보장하지 않는 map, Key와 Value로 null이 허용된다.
- HashTable
- 동기화를 지원하는 map, Key와 Value로 null이 허용되지 않는다.
- TreeMap
- 이진 검색 Tree 구조의 Map, 저장시 Key기준으로 오름차순 저장된다.
- LinkedHashMap
List와 Set의 차이
- List는 기본적으로 순서대로 데이터가 들어가며 중복을 허용한다.
- Set은 순서가 보장되지 않고 중복을 허용하지 않는다.
- Map은 순서가 보장되지 않고, Key 중복은 허용하지 않지만 Value의 중복은 허용된다.
Graph(그래프)
- Graph(그래프)란 node와 node를 연결하는 edge를 하나로 모은 자료구조
- 무방향, 양방향, 단방향 다 가능하다
- 루트 노드 개념이 없다
- 순환, 비순환, Self loop도 가능
- 사이클이 없는 Graph는 Tree와 같다
Graph와 Tree의 차이
- Tree는 사이클이 없다, 하지만 Graph는 사이클이 있다
- Tree는 한개의 루트노드가 있다. 그래서 Tree는 계층 모델이 된다
- Graph는 루트노드가 없기에 네트워크 모델이다
- Tree의 간선 개수는 항상 정점개수 - 1, Graph는 정해져 있지 않다.