이 글을 읽기 전에 아래 collections에 대한 글을 읽고 오는 것을 추천한다.
[Java][자료구조] HashMap, HashSet 이란? - (1) collections란?
이번 글에서는 Set과 Map에 대해 알아본다.
Set 이란?
한국말로 '집합'의 뜻으로, 말 그대로 데이터들을 모은 집합이다.
큰 특징으로는,
(1) 데이터들 간에 순서가 없고
(2) 중복된 데이터를 포함할 수 없다.
이전 글에서 봤던 그림을 다시 보자.
가장 오른쪽의 Set 인터페이스 부분을 보면,
구현체로 크게 HashSet, LinkedHashSet, TreeSet 등을 볼 수 있다.
이 중 가장 대표적인 것이 HashSet이고, 다음 글에서 HashMap과 함께 자세히 작성할 예정이다.
Map 이란?
Set과 함께 자주 등장하는 Map은,
List나 Set의 형태인 collection 자료구조와는 다르게 Key(키)와 Value(값)으로 데이터를 저장하고
Key를 이용하여 Value를 얻을 수 있기 때문에 검색의 개념이 강하다.
Map의 큰 특징은 Set과 비슷한데, 아래와 같다.
(1) Key는 Unique(고유) 해야 한다.
(2) Value는 중복되어도 괜찮다.
(3) 모든 데이터는 Key-Value 형식으로 저장된다.
(4) 데이터들 간에 순서가 없다.
(5) Key나 Value 중 하나라도 없을 수 없다.
이러한 Map 인터페이스 구현체들을 알아보기 위해 이번에도 이전 글에서 보았던 그림을 다시 보자.
크게 Hashtable, HashMap, TreeMap 등을 볼 수 있다.
어? Hashtable?
이전에 작성했던 Hash에 관한 글에서 봤었다.
해시 함수를 사용하는 대표적인 자료구조였는데,
Map 인터페이스의 대표적인 구현체인 HashMap과 비교하면 아래와 같다.
차이점은,
Hashtable은 여러 Thread에서 동시 접근이 가능하기 때문에 Thread Safe 해서 동기화(Synchronized)가 보장되지만,
HashMap은 Thread Safe 하지 않아서 동기화가 보장되지 않는다.
그러나 Collections의 synchronizedMap()과 같은 클래스를 사용하면 동기화가 보장되는 HashMap을 사용할 수 있다.
공통점은,
Hashtable과 HashMap 모두 Hash를 사용하며,
Map 인터페이스의 구현체이고,
Key-Value 형식으로 데이터를 저장하고 관리한다.
Set과 Map 자료구조에 대해 간단하게 알아보았다.
HashSet과 HashMap에 대해 알아보려다가 어느 새인가 또 이렇게 글이 길어졌다..
다음 편은 HashSet과 HashMap에 대해 알아보고 공통점 및 차이점에 대해서도 알아본다.
끝!
'Study > Java' 카테고리의 다른 글
[Java] HashMap, HashSet 이란? - (4) HashSet이란? (0) | 2021.03.31 |
---|---|
[Java] HashMap, HashSet 이란? - (3) HashMap이란? (0) | 2021.03.27 |
[Java] HashMap, HashSet 이란? - (1) collections란? (0) | 2021.03.19 |
[Java] JDK 다운로드 / 설치 / 실행 방법 (Eclipse 설정) (0) | 2021.01.02 |
[Java] JDK란? (0) | 2021.01.01 |