일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- db
- 함수
- javascript
- data
- 인공지능
- centos
- git
- mariaDB
- DeepLearning
- Security
- ai
- Web
- interface
- Pattern
- java
- Analysis
- SSH
- learning
- Deep
- framework
- LIST
- error
- Github
- 자바
- Linux
- Python
- Numpy
- Spring
- Server
- mysql
- Today
- Total
PostIT
[Java]HashSet과 HashMap 본문
# HashSet과 HashMap에 대한 정리
HashMap 과 HashSet의 차이는 빈번히 올라오는 질문이다. HashMap과 HashSet은 둘 다 collection framework에 속하여 객체들의 모음(collection)을 이용해 작업 하는 것을 도와준다. Collection framework는 인터페이스와 구현된 클래스를 가지고 있다. 기본적으로 collection framework는 Set, List, Queue 인터페이스로 나눠진다. 각각의 인터페이스는 속성을 갖게 되는데 예로 들어, Set은 객체를 받되 중복되는 값은 허용하지 않으며 List는 인덱싱을 하여 중복을 허용하고, queue는 FCFS 알고리즘을 기반으로 한다.
먼저 HashMap과 HashSet이 무엇인지 살펴보고 나서, 이 둘의 차이점에 대해 살펴보겠다.
- HashSet이란? (Java에서)
HashSet은 Set 인터페이스를 구현한 것으로 들어오는 객체 중, 중복된 객체를 허용하지 않는다. HashSet에 들어가는 객체들은 반드시 equals()와 hashCode() 메소드를 구현해야 하는데, 이 메소드들을 가지고 HashSet에 들어갈 때 중복된 객체가 있는지 여부를 체크하게 된다.
public boolean add(Object o) 메소드는 set에 데이터를 집어넣을 때 사용되는데, 성공적으로 추가되면 true를, 중복된 객체가 들어오면 false를 리턴한다.
- HashMap이란?
HashMap은 Map 인터페이스를 구현한 것으로 key-value 형식의 데이터를 저장한다. 역시나 중복된 key값은 허용되지 않는다. 기본적으로 Map 인터페이스는 HashMap과 TreeMap, 이 두가지의 기구현된 클래스가 있다. 이 둘의 주요 차이점은 TreeMap은 집어 넣은 순서를 유지하는데 비해 HashMap은 유지하지 않는다. HashMap은 null value와 null key value를 허용한다. HashMap은 기본적으로 동기화(synchronized)가 되지 않으나, collection framework가 메소드를 제공하므로 이를 이용해서 HashMap을 동기화 시켜 멀티 쓰레드 환경에서 사용할 수 있다.
public Object put(Object key, Object value) 메소드는 map에 데이터를 저장할 때 사용한다.
- HashSet과 HashMap의 차이 (Java에서)
HashMap
1. HashMap은 Map 인터페이스를 구현했다.(implement)
2. HashMap은 데이터를 key-value 형식으로 저장한다.
3. put() 메소드는 데이터를 넣을 때 사용된다.
4. HashMap에서 hashcode 값은 key value를 이용하여 생성한다.
5. HashMap은 unique key를 이용하여 데이터에 바로 접근하기에 HashSet에 비해서 빠르다.
HashSet
1. HashSet은 Set 인터페이스를 구현했다.(implement)
2. HashSet은 객체만 저장할 수 있다.
3. add() 메소드를 통해 데이터를 저장한다.
4. 들어가는 객체를 이용하여 hashcode를 생성하고, equal() 메소드를 이용해 hashcode를 비교, 중복된 객체가 있는지 체크한다. (equal() 메소드는 중복된 객체가 있으면 true를, 없으면 false를 리턴한다.
5. HashMap에 비해 느리다.
참조 :
Javarevisited 블로그 글 번역, 원문 click
'Java > Data Structure' 카테고리의 다른 글
[Java/Collection] Java Collection Framework에 대한 이해를 통해 Data Structure 이해하기. (0) | 2017.05.03 |
---|