본문 바로가기
Java

HashMap 사용법 (개념, 특징, 메소드)

by asdft 2024. 2. 16.

1. HashMap 이란?

HashMap 데이터를 저장할 때 키(Key)와 밸류(Value)가 짝을 이루어 저장됩니다. 데이터를 저장할 때는 키(Key) 값으로 해시함수를 실행한 결과를 통해 저장위치를 결정합니다.

따라서 HashMap은 특정 데이터의 저장위치를 해시함수를 통해 바로 알 수 있기 때문에 데이터의 추가, 삭제, 특히 검색이 빠르다는 장점이 있습니다

이러한 이유로 HashMap은 키(Key)값을 통해서만 검색이 가능하며, HashMap의 키(Key) 값은 중복될 수 없고,

밸류(Value) 값은 키(Key) 값이 다르다면 중복이 가능합니다. 

 

2. HashMap 선언

HashMap<String, String> h1 = new HashMap<String, String>( );

 

 

3. HashMap 메서드

V : 컬렉션ex) V put -> 컬렉션명.put( )

1) 데이터 추가
V put(K key, V value) : key와 value를 저장합니다. 
void putAll(Map<? extends K, ? extends V> m) : Map m의 데이터를 전부 저장합니다. 
V putIfAbsent(K key, V value) : 기존 데이터에 key가 없으면  key와 value를 저장합니다.

 

2) 데이터 삭제
void clear( ) : 모든 데이터를 삭제합니다. 
V remove(Object key) : key와 일치하는 기존 데이터( key와 value)를 삭제합니다. 
boolean remove(Object key, Object value) : key와 value가 동시에 일치하는 데이터를 삭제합니다.

 

3) 데이터 수정
V replace(K key, V value) : key와 일치하는 기존 데이터의 value를 변경합니다. 
V replace(K key, V oldValue, V newValue) : key와 oldValue가 동시에 일치하는 데이터의 value를 newValue로 변경합니다.

 

4) 데이터 확인
boolean containsKey(Object key) : key와 일치하는 데이터가 있는지 여부를 반환합니다. (있으면 true)
boolean containsValue(Object value) : value가 일치하는 데이터가 있는지 여부를 반환합니다. (있으면 true)
boolean isEmpty( ) : 데이터가 빈 상태인지 여부를 반환합니다. (빈 상태면 true)
int size( ) : key-value 맵핑 데이터의 개수를 반환합니다.

 

5) 데이터 반환
V get(Object key) : key와 맵핑된 value값을 반환합니다. 
V getOrDefault(Object key, V defaultValue) : key와 맵핑된 value값을 반환하고 없으면 defaultValue값을 반환합니다.
Set<Map.Entry<K, V>> entrySet( ) : 모든 key-value 맵핑 데이터를 가진 Set 데이터를 반환합니다. 
Set<K> keySet( ) : 모든 key 값을 가진 Set 데이터를 반환합니다. 
Collection<V> values( ) : 모든 value 값을 가진 Collection 데이터를 반환합니다.

 

Map 에서 key 값으로 value 값을 취득하는 경우 get() 메소드를 사용한다.

이때, Map 에서 key 가 존재하면 해당하는 key 의 value 값을 반환하고,  찾는 key 가 없거나 null 이면 null 을 반환한다.

이때, null 대신 기본 값을 반환하도록 할 수 있는 메소드 getOrDefault() 이다.

 

 

getOrDefault(Object key, V defaultValue)

Object key : 찾는 key 값
V defaultValue : 찾는 key 의 value 값이 없거나 null 일때 반환하는 값

 

즉, key 가 존재하면 key 의 value 값을 반환하고 없거나 null 이면 defaultValue를 반환한다.

ex)       컬렉션.getOrDefault(찾는 key값 , 0)+1);

int[] tangerine = {1,3,2,5,4,5,2,3} 

HashMap<Integer,Integer> map = new HashMap<>();
        for(int t : tangerine){
            map.put(t, map.getOrDefault(t,0)+1);
        }

출력 값  :  {1=1,2=2,3=2,4=1,5=2}

 

 


 

출처:

https://kadosholy.tistory.com/120 [KADOSHoly:티스토리]

https://gymdev.tistory.com/39