본문 바로가기

Java

[Java]자바에서 HashMap 사용하기

 

자바에서 HashMap 사용하기

자바에서 `HashMap`은 파이썬의 딕셔너리와 비슷한 데이터 구조야. key와 value 쌍으로 데이터를 저장할 수 있다. 이름과 전화번호 같은 쌍을 저장할 때 유용하다.

HashMap 개념

`HashMap`은 키(key)와 값(value) 쌍을 저장하는 데 사용된다. 키를 사용해 값을 빠르게 검색할 수 있다. 중복된 키는 허용되지 않고, 각 키는 하나의 값에만 연결된다.

예제 코드

아래는 `HashMap`을 사용하는 간단한 예제 코드

import java.util.HashMap;

public class HashMapMain {

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

        // 데이터 저장
        phoneMap.put("model", "iPhone 12");
        phoneMap.put("year", "2021");
        phoneMap.put("color", "red");

        // 데이터 액세스
        System.out.println(phoneMap.get("model")); // iPhone 12

        // 잘못된 코드 - 인덱스 접근
        for (int i = 0; i < phoneMap.size(); i++) {
            System.out.println(phoneMap.get(i)); // null 출력됨
        }

        // 올바른 코드 1 - 배열로 변환하여 값 접근
        Object[] values = phoneMap.values().toArray();
        for (int i = 0; i < values.length; i++) {
            System.out.println((String)values[i]);
        }

        // 올바른 코드 2 - for-each 문으로 값 접근
        for (Object data : phoneMap.values().toArray()) {
            System.out.println(data);
        }

        // 데이터 값 변경
        phoneMap.replace("color", "blue");
        System.out.println(phoneMap.get("color")); // blue

        // 데이터 제거
        phoneMap.remove("year");
        System.out.println(phoneMap.get("year")); // null

        // 전체 데이터 삭제
        phoneMap.clear();

        // 데이터가 있는지 확인
        if (phoneMap.isEmpty()) {
            System.out.println("데이터 없음");
        } else {
            System.out.println("데이터 있음");
        }
    }
}

설명

코드 설명:

  • HashMap 생성: `HashMap<String, String> phoneMap = new HashMap<>();`
  • 데이터 저장: `phoneMap.put("model", "iPhone 12");`
  • 데이터 액세스: `System.out.println(phoneMap.get("model"));`
  • 잘못된 코드 - 인덱스 접근: `for (int i = 0; i < phoneMap.size(); i++) { System.out.println(phoneMap.get(i)); }`
  • 올바른 코드 1 - 배열로 변환하여 값 접근: `Object[] values = phoneMap.values().toArray();`
  • 올바른 코드 2 - for-each 문으로 값 접근: `for (Object data : phoneMap.values().toArray()) { System.out.println(data); }`
  • 데이터 값 변경: `phoneMap.replace("color", "blue");`
  • 데이터 제거: `phoneMap.remove("year");`
  • 전체 데이터 삭제: `phoneMap.clear();`
  • 데이터가 있는지 확인: `if (phoneMap.isEmpty()) { System.out.println("데이터 없음"); }`