HashMap, HashSet에 대하여

제로코딩

·

2022. 7. 5. 09:49

반응형

HashMap, HashSet에 대하여

 

 

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