Language/Java
HashMap❓
m5n
2024. 5. 24. 00:11
HashMap❓
- Map 인터페이스를 구현한 대표적인 Map 컬렉션
- Map의 성질을 그대로 가지고 있기 때문에
키와 값으로 구성된 Entry 객체를 저장하는 구조
를 가짐 해싱(Hashing)
을 사용하기 때문에 데이터를 검색하는데 있어 좋은 성능을 가짐
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