HashMap
Map 인터페이스를 구현한 대표적인 Map 컬렉션
- Hashing + Map
- Map은 <키, 값> 구성된 객체를 저장하는 자료구조
- 키는 중복될 수 없다. → 동일한 키로 값을 저장하면 기존 값은 사라지고 새로운 값으로 대치
- Hash을 사용 → 데이터를 검색하는데 뛰어난 성능을 보인다.
HashMap 생성
import java.util.Map
import java.util.HashMap
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<>(); // 타입 생략 가능
Map<String, Integer> map = new HashMap<>(10); // 초기 용량 지정
Map<String, Integer> map = new HashMap<>() {{ // 초기값 지정
put("key1", 1);
}};
HashMap 사용
map.put("key1", 1); // <키, 값> 추가
map.put("key1", 2); // 동일한 키 > 새로운 값으로 덮어씌워진다.
map.get("key1"); // 키에 해당하는 데이터 출력
map.remove("key1"); // 키에 해당하는 데이터 제거
map.clear(); // map의 모든 데이터 제거
map.containsKey("key1"); // map에 특정 키가 존자해는지 여부
map.containsValue(10); // map에 특정 값이 존자해는지 여부
HashMap 순회
- entrySet() 사용 : map의 모든 데이터 <키, 값> 출력
- keySet() 사용 : map의 모든 키 출력
Key 값을 사용해 Value를 확인하는 과정에서 많은 시간이 소모된다. 많은 양의 데이터를 확인해야 한다면 entrySet() 을 사용하는 것이 좋다.
// entrySet() 사용
for (Entry<String, Integer> entry: map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// keySet**() 사용**
for (String key: map.keySet()) {
System.out.println(key + " : " + map.get(key));
}
- iterator 사용: 보다 빠르게 원소에 접근할 수 있다.
Iterator<Entry<String, Integer>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, Integer> entry = iter.next()
System.out.println(entry.getKey() + " : " + entry.getVaue());
}
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next()
System.out.println(key + " : " + map.get(key));
}
HashMap의 값을 변경하는 방법
- 특정 키에 해당하는 값만 변경
map.put("key1", 10);
map.put("key1", map.get("key1")*10);
map.replace("key1", 10);
- 특정 조건에 해당하는 모든 값 변경
map.replaceAll((key, value) -> {
if (key.contains("x2")) {
return value * 2;
} else {
return value;
}
});
'CS' 카테고리의 다른 글
[CS 스터디] PCB (Process Control Block) (0) | 2023.07.21 |
---|---|
[CS 스터디] 시스템 콜, fork() wait() exec() (0) | 2023.07.21 |
[알고리즘] 최대 공약수 구하기 - 유클리드 호제법 (0) | 2023.07.18 |
[CS 스터디] 프로세스 주소 공간 (0) | 2023.07.17 |
[CS 스터디] 인터럽트 (Interrupt) (0) | 2023.07.17 |