[Java] HashMap 사용법
HashMap 선언
import java.util.HashMap; // ✅
HashMap<String, Integer> hm1 = new HashMap<String, Integer>(); // (String, Integer) 쌍의 HashMap생성
HashMap<String, String> hm2 = new HashMap<String, String>(); // (String, String) 쌍의 HashMap생성
HashMap<String,String> hm3 = new HashMap<>(); // new에서 타입 파라미터 생략가능
HashMap<String,String> hm4 = new HashMap<>(hm1); // hm1의 모든 값을 가진 HashMap생성
HashMap<String,String> hm5 = new HashMap<>(10); // 초기 용량(capacity)지정
HashMap<String,String> hm6 = new HashMap<>(10, 0.7f); // 초기 capacity,load factor지정
HashMap<String,String> hm7 = new HashMap<String,String>(){{ // 초기값 지정
put("a","b");
}};
값 추가
HashMap<Integer,String> hm = new HashMap<>(); // new에서 타입 파라미터 생략가능
hm.put(1, "사과"); // 값 추가
hm.put(2, "바나나");
hm.put(3, "포도");
만약 입력되는 키 값이 HashMap 내부에 존재한다면 기존의 값은 새로 입력되는 값으로 대치됩니다.
값 삭제
HashMap<Integer,String> hm = new HashMap<Integer,String>(){{ // 초기값 지정
put(1, "사과");
put(2, "바나나");
put(3, "포도");
}};
hm.remove(1); // key가 1인 요소 제거
hm.clear(); // 모든 요소 제거
값 출력 (순회)
⚠️ 넣은 순서대로의 출력을 보장하지 않는다 !!
for 이용
✅ for: 순회중 중단 가능
방법 1 - entrySet()
활용
for (HashMap.Entry<String, Integer> entry : hm.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
방법 2 - keySet()
활용
for (String key : hm.keySet()) {
System.out.println(key); // key 출력
System.out.println(key + ":" + hm.get(key)); // key를 알면 value까지 출력 가능
}
방법 3 - valuees()
활용
for (String val : hm.values()) {
System.out.println(val); // value 출력
}
Iterator
이용
방법 1 - keySet().iterator()
import java.util.HashMap;
import java.util.Iterator;
Iterator<String> keys = map.keySet().iterator();
while(keys.hasNext()){
String strKey = keys.next();
System.out.println(strKey + ":" + map.get(strKey));
}
방법 2 - entrySet().iterator()
✅
🌟 이 방법이 빠르다고 한다!
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry<Integer, String> entry = entries.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
}
forEach 이용
⚠️ forEach: 순회중 중단 불가
Java 1.8 이상
hm.forEach((key, val) -> {
System.out.println(key + ":" + val);
// break 혹은 return 문을 넣으면 에러가 발생한다 !!
});
그 외 메서드
getOrDefault()
: 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
import java.util.HashMap;
String [] alphabet = { "A", "B", "C" ,"A"};
HashMap<String, Integer> hm = new HashMap<>();
for(String key : alphabet) {
hm.put(key, hm.getOrDefault(key, 0) + 1);
}
System.out.println("결과 : " + hm); // {A=2, B=1, C=1}
size()
HashMap<Integer,String> hm = new HashMap<>();
hm.put(1, "사과");
hm.put(2, "바나나");
hm.put(3, "포도");
System.out.println(hm.size()); // 3
참고
- https://homzzang.com/b/java-42
- https://junghn.tistory.com/entry/JAVA-Map-getOrDefault-%EC%9D%B4%EB%9E%80-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C
💛 개인 공부 기록용 블로그입니다. 👻