Java

[Java] 자바 HashMap 사용하기

yujinius 2024. 5. 6. 21:51

HashMap 이란?

HashMap은 키-값(key-value) 쌍을 저장하는 자료 구조로, 키를 사용하여 값을 빠르게 찾을 수 있는 해시 테이블을 기반으로 합니다. 각 키는 고유해야 하며, 키는 중복될 수 없습니다. 이 자료 구조는 많은 양의 데이터를 효율적으로 관리할 때 유용하며, Java 컬렉션 프레임워크의 일부입니다.

 

HashMap의 사용

HashMap을 사용하기 위해서는 먼저 해당 클래스를 임포트해야 합니다.

import java.util.HashMap;

 

그리고 HashMap 객체를 생성하고 키-값 쌍을 추가하거나 제거하고 값을 조회하는 등의 작업을 수행할 수 있습니다.

HashMap의 주요 메소드

  1. put(key, value): 특정 키에 값을 매핑하여 HashMap에 추가합니다. => 기존 키가 있다면 값이 수정됩니다.
  2. get(key): 주어진 키에 해당하는 값을 반환합니다.
  3. remove(key): 주어진 키에 해당하는 키-값 쌍을 제거합니다.
  4. containsKey(key): 주어진 키가 HashMap에 있는지 여부를 확인합니다.
  5. containsValue(value): 주어진 값이 HashMap에 있는지 여부를 확인합니다.
  6. keySet(): HashMap에 있는 모든 키를 포함하는 Set을 반환합니다.
  7. values(): HashMap에 있는 모든 값을 포함하는 Collection을 반환합니다.

HashMap 예시

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // HashMap 객체 생성
        HashMap<String, Integer> hashMap = new HashMap<>();

        // put 메소드를 사용하여 키-값 쌍 추가
        hashMap.put("apple", 10);
        hashMap.put("banana", 20);
        hashMap.put("orange", 15);

        // get 메소드를 사용하여 특정 키에 해당하는 값을 조회
        System.out.println("Value of apple: " + hashMap.get("apple"));

        // remove 메소드를 사용하여 특정 키에 해당하는 키-값 쌍 제거
        hashMap.remove("banana");

        // containsKey 메소드를 사용하여 특정 키가 있는지 확인
        System.out.println("Contains key 'banana': " + hashMap.containsKey("banana"));

        // keySet 메소드를 사용하여 모든 키 출력
        System.out.println("Keys: " + hashMap.keySet());

        // values 메소드를 사용하여 모든 값 출력
        System.out.println("Values: " + hashMap.values());
    }
}

결과

Value of apple: 10
Contains key 'banana': false
Keys: [orange, apple]
Values: [15, 10]

 

이외의 메소드 사용법

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

public class Main {
    public static void main(String[] args) {
        // HashMap 객체 생성
        HashMap<String, Integer> hashMap = new HashMap<>();

        // put 메서드를 사용하여 키-값 쌍 추가
        hashMap.put("apple", 10);
        hashMap.put("banana", 20);
        hashMap.put("orange", 15);

        // containsKey 메서드를 사용하여 특정 키가 있는지 확인
        System.out.println("Contains key 'banana': " + hashMap.containsKey("banana"));
        // Contains key 'banana': true

        // containsValue 메서드를 사용하여 특정 값이 있는지 확인
        System.out.println("Contains value 20: " + hashMap.containsValue(20));
        // Contains value 20: true

        // entrySet 메서드를 사용하여 맵의 키-값 쌍 확인
        System.out.println("Entry set: " + hashMap.entrySet());
        // Entry set: [banana=20, orange=15, apple=10]

        // get 메서드를 사용하여 특정 키에 해당하는 값을 조회
        System.out.println("Value of apple: " + hashMap.get("apple"));
        // Value of apple: 10

        // getOrDefault 메서드를 사용하여 특정 키에 해당하는 값을 조회 (키가 없을 때 기본값 반환)
        System.out.println("Value of banana: " + hashMap.getOrDefault("banana", 0));
        // Value of banana: 20

        // isEmpty 메서드를 사용하여 맵이 비어 있는지 확인
        System.out.println("Is map empty? " + hashMap.isEmpty());
        // Is map empty? false

        // keySet 메서드를 사용하여 맵의 모든 키 확인
        System.out.println("Keys: " + hashMap.keySet());
        // Keys: [banana, orange, apple]

        // put 메서드를 사용하여 특정 키에 값을 설정
        hashMap.put("grape", 25);

        // putAll 메서드를 사용하여 다른 맵의 모든 매핑을 현재 맵으로 복사
        HashMap<String, Integer> anotherMap = new HashMap<>();
        anotherMap.put("kiwi", 30);
        anotherMap.put("melon", 40);
        hashMap.putAll(anotherMap);

        // putIfAbsent 메서드를 사용하여 특정 키에 값이 없는 경우만 값 설정
        hashMap.putIfAbsent("apple", 12);

        // remove 메서드를 사용하여 특정 키에 해당하는 항목 제거
        hashMap.remove("banana");

        // remove 메서드를 사용하여 특정 키와 값에 해당하는 항목 제거
        hashMap.remove("orange", 15);

        // replace 메서드를 사용하여 특정 키에 해당하는 값을 변경
        hashMap.replace("apple", 12);

        // replace 메서드를 사용하여 특정 키와 이전 값에 해당하는 값을 변경
        hashMap.replace("kiwi", 30, 35);

        // size 메서드를 사용하여 맵의 크기 확인
        System.out.println("Size of map: " + hashMap.size());
        // Size of map: 4

        // values 메서드를 사용하여 맵의 모든 값 확인
        System.out.println("Values: " + hashMap.values());
        // Values: [12, 35, 25, 40]
    }
}

 

Java HashMap의 활용: EntrySet과 Iterator

 EntrySet과 Iterator를 사용하여 데이터를 순회하고 읽는 방법입니다. 

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapEx {
    public static void main(String[] args) {
        // HashMap 생성
        HashMap<String, Integer> hashMap = new HashMap<>();

        // 키-값 쌍 추가
        hashMap.put("사과", 1000);
        hashMap.put("바나나", 2000);
        hashMap.put("딸기", 1500);
        hashMap.put("포도", 3000);

        // 저장된 총 Entry 수 확인
        int size = hashMap.size();
        System.out.println("총 Entry 수: " + size);

        // 특정 키에 해당하는 값 찾기
        Integer value = hashMap.get("사과");
        System.out.println("사과의 가격: " + value);

        // 모든 키 출력
        Set<String> keys = hashMap.keySet();
        System.out.println("키 목록: " + keys);

        // Iterator를 사용하여 모든 항목 순회하며 출력
        Iterator<String> iterator = keys.iterator();
        while (iterator.hasNext()) {
            String key = iterator.next();
            Integer price = hashMap.get(key);
            System.out.println("키: " + key + ", 가격: " + price);
        }

        // 특정 키 제거 후 크기 확인
        hashMap.remove("딸기");
        System.out.println("딸기 제거 후 크기: " + hashMap.size());

        // EntrySet을 사용하여 모든 항목 출력
        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
        for (Map.Entry<String, Integer> entry : entrySet) {
            System.out.println("키: " + entry.getKey() + ", 가격: " + entry.getValue());
        }

        // HashMap 비우기
        hashMap.clear();
        System.out.println("HashMap이 비어 있는지 확인: " + hashMap.isEmpty());
    }
}

https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

 

HashMap (Java Platform SE 8 )

If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the given mapping function and enters it into this map unless null. If the function returns null no mapping is recorded. If the function

docs.oracle.com