-
Set 과 Map (Hash Set) - 자바 Collection알고리즘 2022. 4. 18. 16:06
자바의 Collection에는 Set, List, Map 3가지의 인터페이스가 있다.
1. Set 인터페이스 (집합)
: 중복되는 요소를 허용하지 않음. 저장 순서를 유지하지 않음.
- Hash Set
Hash란?
: 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 매핑(변환)하는 것
ex) apple -> eef6ecaf , a -> 89aee2fe
Hash Set이란?
: Hash와 set이 합쳐진 것으로 set 기능을 통해중복없이 데이터를 저장하고,
Hash 기능을 통해데이터가 저장되어 있는지 빠르게 찾을 수 있게 하는 클래스이다
- Linked HashSet
: Hash set을 개선한 것으로 중복은 허용하지 않으면서 입력 순서는 보장받고 싶은 경우 사용한다.
-Tree set
: hash set과 동일하게 저장 순서를 보장하지 않고, 중복 데이터 입력도 불가능하다.
하지만 Tree set은 입력 순서와 상관없이 가중치에 따라 자동 정렬된다. 따라서 중복되지 않으면서 특정 규칙에 의해 정렬된 형태의 집합을 쓰고 싶을 때 사용한다.
HashSet<Integer> set = new HashSet<>(); set.add(2); Iterator<Integer> iter = set.iterator(); while(iter.hasNext()) { iter.next(); }
2. Map 인터페이스
: Key와 Value 쌍으로 이루어진 구조, 순서가 없으며 키는 유일성을 가지지만 value는 중복을 허용한다.
key 값으로 삽입, 삭제, 조회 연산이 빠르지만 순서를 보장하지 않고, 정렬이 되어있지 않다.
- Hash Table
: 예전에는 사용했지만 현재에는 사용하지 않는다.
-Hash Map
: 해시함수를 사용한 map으로 키와 값을 저장하는 자료구조이다. 내부적으로 해시 함수를 통해 키와 값이 저장되는 위치를 결정하기 때문에 사용자가 그 위치를 알 수 없고, 삽입 순서와도 관련이 없으며 정렬되어 있지 않다. null값도 저장 가능하다.
-Linked Hash Map
: 삽입 순서가 보장되지 않는 hash map을 개선한 것으로 키와 값이 삽입 순서에 따라 저장된다.
-Tree Map
: 키와 값을 저장하는 동시에 키를 기준으로 정렬한다. 정렬되기 때문에 데이터 추가나 삭제가 hash map보다 오래 걸린다.
HashMap<Integer, String> map = new HashMap<>(); map.put(3, "안녕"); map.remove(key값); map.get(key값); for(Integer i : map.keySet()) { System.out.println("[Key]:" + i + " [Value]:" + map.get(i)); }
참조
[Java] Java Collection 구조 정리 (tistory.com)
자바 [JAVA] - Set Interface (셋 인터페이스) (tistory.com)
자바 [JAVA] - Hash Set (해시 셋) 구현하기 (tistory.com)
'알고리즘' 카테고리의 다른 글
우선 순위 큐를 활용해 개선시킨 다익스크라 알고리즘 (0) 2022.06.28 최단 경로 - 다익스트라 알고리즘 (0) 2022.06.27 크루스칼(kruskal) 알고리즘, 최소 신장 트리(MST) (0) 2022.04.14 Union-Find(합집합 찾기)알고리즘 (0) 2022.04.14 Merge sort (0) 2022.03.31