HashMap 클래스 선언부 |
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable |
메서드/설명 | 예제 | 결과 |
import java.util.HashMap; | ||
HashMap() 빈 HashMap을 생성한다. 기본 용량은 16, 로드 팩터는 0.75로 설정된다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1); System.out.println(map); |
{A=1} |
HashMap(int capacity) 초기 용량(capacity)을 지정하여 HashMap을 생성한다. |
HashMap<String, String> map = new HashMap<>(50); map.put("key", "value"); System.out.println(map); |
{key=value} |
HashMap(int capacity, float loadFactor) 초기 용량(capacity)과 로드 팩터(loadFactor)를 설정하여 HashMap을 생성한다. |
HashMap<String, String> map = new HashMap<>(100, 0.5f); map.put("name", "Alice"); System.out.println(map); |
{name=Alice} |
HashMap(Map<? extends K,? extends V> m) 주어진 Map의 모든 항목을 복사하여 새로운 HashMap을 생성한다. |
Map<String, Integer> base = new HashMap<>(); base.put("one", 1); base.put("two", 2); HashMap<String, Integer> map = new HashMap<>(base); System.out.println(map); |
{one=1, two=2} |
V put(Object key, Object value) 지정된 키-값 쌍을 추가한다. 이미 존재하는 키일 경우 이전 값을 덮어쓰고, 그 이전 값을 반환한다. |
HashMap<String, String> map = new HashMap<>(); System.out.println(map.put("A", "apple")); // null (신규 추가) System.out.println(map.put("A", "apricot")); // apple (기존 값) System.out.println(map); |
null apple {A=apricot} |
void putAll(Map map) 다른 Map의 모든 엔트리를 현재 Map에 복사한다. |
Map<String, String> source = new HashMap<>(); source.put("X", "x-ray"); source.put("Y", "yellow"); HashMap<String, String> map = new HashMap<>(); map.put("Z", "zebra"); map.putAll(source); System.out.println(map); |
{Z=zebra, X=x-ray, Y=yellow} |
V putIfAbsent(K key, V value) 해당 키가 없을 경우에만 값을 추가한다. 이미 존재하는 경우에는 아무 작업도 하지 않고 기존 값을 반환한다. |
HashMap<String, String> map = new HashMap<>(); map.put("A", "apple"); System.out.println(map.putIfAbsent("A", "apricot")); // 이미 존재 → apple System.out.println(map.putIfAbsent("B", "banana")); // 신규 → null System.out.println(map); |
apple null {A=apple, B=banana} |
V remove(Object key) 해당 키에 대응되는 값을 제거하고 반환한다. 없으면 null. |
HashMap<String, Integer> map = new HashMap<>(); map.put("X", 100); System.out.println(map.remove("X")); // 100 System.out.println(map.remove("Y")); // null System.out.println(map); |
100 null {} |
boolean remove(Object key, Object value) 해당 키와 값이 정확히 일치하는 경우에만 제거하고 true 반환. 아니면 false. |
HashMap<String, String> map = new HashMap<>(); map.put("K", "Kim"); System.out.println(map.remove("K", "Lee")); // false System.out.println(map.remove("K", "Kim")); // true System.out.println(map); |
false true {} |
V get(Object key) 해당 키에 연결된 값을 반환한다. 없으면 null. |
HashMap<String, String> map = new HashMap<>(); map.put("name", "Alice"); System.out.println(map.get("name")); // Alice System.out.println(map.get("age")); // null |
Alice null |
V getOrDefault(Object key, V defaultValue) 해당 키가 있으면 값을 반환하고, 없으면 기본값(defaultValue)을 반환한다. |
HashMap<String, String> map = new HashMap<>(); map.put("A", "apple"); System.out.println(map.getOrDefault("A", "default")); System.out.println(map.getOrDefault("B", "default")); |
apple default |
Set entrySet() 키-값 쌍을 Map.Entry 객체로 묶은 Set을 반환한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + " → " + entry.getValue()); } |
A → 1 B → 2 |
Set keySet() 모든 키들을 Set으로 반환한다. |
HashMap<String, String> map = new HashMap<>(); map.put("K1", "one"); map.put("K2", "two"); System.out.println(map.keySet()); |
[K1, K2] |
Collection<V> values() 모든 값을 Collection으로 반환한다. |
HashMap<String, String> map = new HashMap<>(); map.put("X", "x-ray"); map.put("Y", "yellow"); System.out.println(map.values()); |
[x-ray, yellow] |
boolean containsKey(Object key) 해당 키가 존재하는지 여부를 반환한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("id", 101); System.out.println(map.containsKey("id")); // true System.out.println(map.containsKey("name")); // false |
true false |
boolean containsValue(Object value) 해당 값이 하나라도 존재하는지 여부를 반환한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("a", 1); map.put("b", 2); System.out.println(map.containsValue(2)); // true System.out.println(map.containsValue(3)); // false |
true false |
V replace(K key, V value) 해당 키가 존재할 때만 값을 새 값으로 바꾸고, 이전 값을 반환한다. 키가 없으면 null |
HashMap<String, String> map = new HashMap<>(); map.put("A", "apple"); System.out.println(map.replace("A", "apricot")); // apple System.out.println(map.replace("B", "banana")); // null System.out.println(map); |
apple null {A=apricot} |
boolean replace(K key, V oldValue, V newValue) 해당 키의 현재 값이 oldValue일 때만 newValue로 바꾸고, 성공 시 true 반환. |
HashMap<String, Integer> map = new HashMap<>(); map.put("num", 100); System.out.println(map.replace("num", 100, 200)); // true System.out.println(map.replace("num", 100, 300)); // false System.out.println(map); |
true false {num=200} |
void replaceAll(BiFunction<? super K,? super V,? extends V> function) 모든 항목의 값을 BiFunction 로직에 따라 일괄 수정한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.replaceAll((k, v) -> v * 10); // 모든 값을 10배로 System.out.println(map); |
{A=10, B=20} |
void clear() Map의 모든 요소를 제거한다. |
HashMap<String, String> map = new HashMap<>(); map.put("x", "X"); map.clear(); System.out.println(map); |
{} |
boolean isEmpty() Map이 비어 있으면 true, 아니면 false를 반환한다. |
HashMap<String, String> map = new HashMap<>(); System.out.println(map.isEmpty()); // true map.put("a", "A"); System.out.println(map.isEmpty()); // false |
true false |
Object clone() 현재 HashMap의 얕은 복사본을 생성한다. |
HashMap<String, String> map = new HashMap<>(); map.put("name", "Alice"); HashMap<String, String> copy = (HashMap<String, String>) map.clone(); System.out.println(copy); |
{name=Alice} |
V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 지정된 키에 대해 새로운 값을 계산하여 저장한다. 키가 없으면 null을 기준으로 계산. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1); map.compute("A", (k, v) -> v + 1); // 1 → 2 map.compute("B", (k, v) -> (v == null ? 10 : v)); // B는 없으므로 10 System.out.println(map); |
{A=2, B=10} |
V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) 키가 없을 경우에만 함수를 통해 값을 계산해 저장한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("X", 5); map.computeIfAbsent("Y", k -> 100); // Y 없음 → 저장 map.computeIfAbsent("X", k -> 200); // X 있음 → 무시 System.out.println(map); |
{X=5, Y=100} |
V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 해당 키가 존재할 경우에만 값을 새로 계산해서 저장. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 10); map.computeIfPresent("A", (k, v) -> v * 2); // 10 → 20 map.computeIfPresent("B", (k, v) -> 100); // 무시됨 System.out.println(map); |
{A=20} |
boolean equals(Object o) 두 Map이 동일한 엔트리를 가지면 true를 반환한다. |
Map<String, String> m1 = new HashMap<>(); m1.put("k", "v"); Map<String, String> m2 = new HashMap<>(); m2.put("k", "v"); System.out.println(m1.equals(m2)); |
true |
void forEach(BiConsumer<? super K,? super V> action) 모든 엔트리에 대해 지정된 동작을 수행한다. |
HashMap<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.forEach((k, v) -> System.out.println(k + " : " + v)); |
A : 1 B : 2 |
V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) 키가 존재하면 기존 값과 새로운 값으로 연산. 존재하지 않으면 새 값으로 저장. |
HashMap<String, Integer> map = new HashMap<>(); map.put("apple", 10); map.merge("apple", 5, (oldVal, newVal) -> oldVal + newVal); // 10+5=15 map.merge("banana", 7, (oldVal, newVal) -> oldVal + newVal); // banana 없음 → 7 System.out.println(map); |
{apple=15, banana=7} |
int size() Map에 저장된 엔트리(키-값 쌍)의 수를 반환한다. |
HashMap<String, String> map = new HashMap<>(); map.put("a", "A"); map.put("b", "B"); System.out.println(map.size()); |
2 |
참고자료
'🖥️ Backend > Java' 카테고리의 다른 글
TreeSet 클래스 메서드 총 정리 (1) | 2025.05.17 |
---|---|
HashSet 클래스 메서드 총 정리 (1) | 2025.05.14 |
Stack 클래스 메서드 총 정리 (0) | 2025.05.07 |
LinkedList 클래스 메서드 총 정리 (3) | 2025.05.04 |
ArrayList 클래스 메서드 총 정리 (0) | 2025.05.01 |