Language/Java

HashMap❓

m5n 2024. 5. 24. 00:11

HashMap❓

  • Map 인터페이스를 구현한 대표적인 Map 컬렉션
  • Map의 성질을 그대로 가지고 있기 때문에 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가짐
  • 해싱(Hashing)을 사용하기 때문에 데이터를 검색하는데 있어 좋은 성능을 가짐

hashmap_image

HashMap 특징

  • Key에 기반하여 빠른 데이터 액세스를 제공
  • 내부적으로 Key의 순서를 보장하지 않음
  • 같은 Key를 중복해서 사용할 수 없음, 이미 존재하는 경우 기존 값이 덮어씌워짐
  • 어떤 객체든 키로 사용할 수 있음

HashMap 사용법

HashMap 선언

import java.util.Map;
import java.util.HashMap;

Map<Integer, String> hashMap = new HashMap<>();

 

HashMap 값 추가 및 수정

Map<Integer, String> map = new HashMap<>();

map.put(1, "하나");           // map에 값 추가
map.put(2, "둘");           // map에 값 추가
map.put(3, "셋");           // map에 값 추가

map.replace(key, value);    // key와 일치하는 기존 데이터를 value로 변경

 

HashMap 값 삭제

Map<Integer, String> map = new HashMap<>();

map.remove(1);        // key 값이 1인 값 삭제

 

HashMap 값 출력

Map<Integer, String> map = new HashMap<>();

System.out.println(map);         // 전체 출력 : {1=하나, 2=둘, 3=셋}
System.out.println(map.get(1));    // key값 1의 value얻기 : 하나

// KeySet() 활용 (key만 필요한 경우)
for(Integer i: map.keySet()){ //저장된 key값 확인
    System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
/** 
    [Key]:1 [Value]:사과
    [Key]:2 [Value]:바나나
    [Key]:3 [Value]:포도
*/

// entrySet() 활용 (key와 value가 모두 필요한 경우)
for (Entry<Integer, String> entry: map.entrySet()) {
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
/** 
    [Key]:1 [Value]:사과
    [Key]:2 [Value]:바나나
    [Key]:3 [Value]:포도
*/

// iterator 사용 (values 이용)
Iterator<Integer> it = map.values().iterator();
while(it.hasNext()) {
    answer *= it.next().intValue() + 1;
}

 

HashMap 기타 메서드

Map<Integer, String> map = new HashMap<>();

map.size();                             // map의 사이즈 반환
map.clear();                            // map 초기화
map.isEmpty();                            // map이 빈 상태면 true, 그렇지 않으면 false 반환

Set<Map.Entry<K, V>> entrySet();        // 모든 key-value 데이터를 가진 Set 데이터를 반환
Set<K> keySet();                        // 모든 key 값을 가진 Set 데이터를 반환
Collection<V> values()                    // 모든 value 값을 가진 Collection 데이터를 반환

containsKey(key)                        // key값을 가지고 있다면 true, 아니면 false 반환
containsValue(value)                    // value값을 가지고 있다면 true, 아니면 false 반환

 

Reference

https://kadosholy.tistory.com/120
https://velog.io/@db_jam/Java-%ED%95%B4%EC%8B%9C%EB%A7%B5HashMap-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%A0%95%EB%A6%AC