HashMap과 HashSet은 둘다 collection framework에 속하여 객체들의 모음을 이용해 작업하는 것을 도와준다. Collection framework는 인터페이스 와 구현된 클래스를 가지고 있다.

 

기본적으로 collection framework는 Set, List, Queue 인터페이스로 나눠진다.

각각의 인터페이스는 속성을 갖게 되는데 예로 들어, set는 객체를 받되 중복되는 값은 허용하지 않는다.

List는 인덱싱을 하여 중복을 허용하고, Queue는 FCFS 알고리즘을 기반으로 한다.

(FCFS 알고리즘이란 : FIFO(First In First Out) 대기 큐에 먼저 들어온 것 우선으로 실행해주는 알고리즘 )

 

 

HashSet이란?

HashSet 은 Set 인터페이스를 구현한 것으로 들어오는 객체 중, 중복된 객체를 허용하지 않는다.

 

HashSet에 들어 가는 객체들은 반드시 equals()와 hashCode() 메소드를 구현해야 하는데,

이메소드들을 가지고 HashSet에 들어갈 때 중복된 객체가 있는지 여부를 체크하게 된다.

 

또한 HashSet은 저장 순서를 유지하지 않으므로, 저장 순서를 유지하고자 한다면

LinkedHashSet을 사용해야 한다.

 

public boolean add(Object o) 메소드는 set에 데이터를 집어넣을 때 사용되는데,

성공적으로 추가되면 true 를 중복된 객체가 들어오면 false를 리턴한다.

 

 

 

HashMap이란?

hashMap은 Map 인터페이스를 구현한 것으로 Key-value 형식의 데이터를 저장한다.

역시나 중복된 key값ㅇ느 호용되지 않는다.

HashMap과 TreeMap 이 두가지의 기구현된 클래스가 있다.

이 둘의 주요 차이점은 TreeMap은 집어 넣은 순서를 유지하는데 비해 HashMap은 유지하지 않는다.

HashMap은  null value 와 null key value를 허용한다.

HashMap은 기본적으로 동기화(synchronized) 가 되지 않으나, collection framework가 메소드를 제공하므로 이를 이용해서 HashMap을 동기화 시켜 멀티 쓰레드 환경에서 사용 할 수 있다.

 

put()

 

public Object put(Object key, Object value)메소드는 map에 데이터를 저장 할 때 사용한다.

 

 

다음 정리 할 것 --> 해시코드와 해싱 & Hashtable