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:티스토리]
'Java' 카테고리의 다른 글
[Java] ArrayList와 LinkedList의 차이 (0) | 2024.02.18 |
---|---|
[Java] ArrayList 사용법 (1) | 2024.02.18 |
Iterator란? Iterator 사용하는 이유 & 사용법 (0) | 2024.02.16 |
Stack / Queue (0) | 2024.01.22 |
기본형(Primitive) vs 참조형(Reference) vs 래퍼 클래스(Wrapper Class) (1) | 2024.01.19 |