HashMap, HashSet에 대하여
제로코딩
·2022. 7. 5. 09:49
✋ HashMap, HashSet에 대하여
HashMap은 Map 인터페이스의 구현체인 자료구조입니다.
HashSet은 Set 인터페이스의 구현체로, 내부적으로 HashMap을 사용하는 자료구조입니다
⚡️ Map과 Set
배열은 크기가 고정되고 삽입과 삭제 시 오래 걸리는 단점이 있기 때문에 다양한 자료구조가 나오게 됐습니다.
Map은 키와 데이터를 같이 저장이 가능한 자료구조입니다.
Map의 특징은 순서가 유지되지 않고 키값을 기반으로 한 뛰어나 검색 속도 및 인덱스가 존재하지 않기 때문에 iterator를 사용합니다.
Set은 순서가 없고 중복도 존재 불가능한 자료구조입니다.
특징은 인덱스를 사용하지 않고 빠른 검색 속도를 갖고 있고 마찬가지로 iterator를 사용합니다.
📌 HashMap
HashMap은 Key-Value 쌍 형태로 데이터를 저장하며, Key와 Value의 mapping을 유지합니다.
HashMap은 중복 Key 값을 허용하지 않지만, 중복 Value 값은 허용한다.
ex. {'a': 1, 'b': 1, 'c': 2}
즉, HashMap은 하나의 NULL 값을 Key 값으로 가질 수 있고, 여러 NULL 값을 Value 값으로 가질 수 있다.
HashMap은 put() 메서드를 사용하여 데이터를 삽입하는데, Key-Value 쌍 데이터의 형태를 저장하기 때문에
삽입 연산 동안 단 하나의 객체가 생성된다.
기본적으로 동기화가 되지 않으나, collection framework를 통해 동기화 시켜 멀티쓰레드 환경에서 사용 가능합니다.
Hash값은 key와 value를 통해서 생성합니다.
unique key를 이용해서 데이터에 접근하므로 HashSet에 비해서 빠릅니다.
📌 HashSet
HashSet은 객체 그 자체를 저장합니다.
HashSet은 HashMap을 내부적으로 사용하는데,
Key 값으로는 삽입되는 객체 그 자체를, Value 값으로는 HashSet 내부 구현 코드에서 미리 선언해둔 dummy 객체를 사용합니다.
HashSet은 객체 자체를 데이터로 저장하기 때문에 중복을 허용하지 않습니다.
ex. {'a', 'b', 'c'}
HashSet은 오직 하나의 NULL 값을 가질 수 있다.
HashSet은 add() 메서드를 사용하여 데이터를 삽입하는데,
객체 그 자체를 저장하고 내부적으로 HashMap을 사용하기 때문에 삽입되는 객체(Key값)와 dummy 객체(Value 값),
총 두 개의 객체가 삽입동안 생성됩니다.
HashSet은 객체만 저장할 수 있고, 들어가는 객체를 이용해 hashcode를 생성합니다.
📌 성능 결론
HashMap이 HashSet보다 빠릅니다.
그래서 보통 HashMap이 HashSet보다 선호되고 중복처리가 필요할 경우 HashSet을 사용합니다.
'Computer Science' 카테고리의 다른 글
서버 프로그램 구현에 대해 (0) | 2022.07.08 |
---|---|
데이터 모델링 절차에 관하여 (0) | 2022.07.04 |
C언어 왜 공부해야 하는가? (0) | 2022.07.03 |
TCP / IP 란? (0) | 2022.06.29 |
TCP와 UDP의 개념, 특징, 차이 (0) | 2022.06.29 |