산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java HashMap 마스터: 연산, 예제, 모범 사례

Java HashMap 완전 정복

Java HashMap 클래스의 핵심 기능, 일반 연산, 실전 예제를 통해 실무에서 자신 있게 활용하세요.

HashMap 클래스는 Java 컬렉션 프레임워크의 일부로, 키/값 쌍으로 데이터를 저장하는 해시 테이블을 구현합니다. 각 키는 고유하며 연관된 값의 식별자 역할을 합니다. 이 클래스는 Map 인터페이스를 구현하여 데이터 조작을 위한 다재다능한 API를 제공합니다.


HashMap 생성하기

java.util.HashMap 패키지 임포트로 시작:

import java.util.HashMap;

맵 인스턴스화. 제네릭 키 타입 K와 값 타입 V 지정 또는 타입 추론 사용:

HashMap<K, V> numbers = new HashMap<>();

구체 타입 예제:

HashMap<String, Integer> numbers = new HashMap<>();

예제 1: 기본 HashMap 생성

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> languages = new HashMap<>();
        languages.put("Java", 8);
        languages.put("JavaScript", 1);
        languages.put("Python", 3);
        System.out.println("HashMap: " + languages);
    }
}

출력

HashMap: {Java=8, JavaScript=1, Python=3}

HashMap 핵심 연산

HashMap 클래스는 풍부한 메서드 세트를 제공합니다. 가장 자주 쓰이는 것들을 다룹니다:


1. 요소 추가하기

put()으로 키/값 쌍 삽입. 키가 이미 있으면 값이 교체됩니다.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> numbers = new HashMap<>();
        System.out.println("Initial HashMap: " + numbers);
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("HashMap after put(): " + numbers);
    }
}

출력

Initial HashMap: {} HashMap after put(): {One=1, Two=2, Three=3}

이 예제에서 Key: String, Value: Integer입니다.


2. 요소 접근하기

get(key)로 값 검색. 키가 없으면 null 반환.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String value = languages.get(1);
        System.out.println("Value at key 1: " + value);
    }
}

출력

HashMap: {1=Java, 2=Python, 3=JavaScript} Value at key 1: Java

keySet(), values(), entrySet()으로 전체 키 집합, 값 컬렉션, 엔트리 집합 획득 가능:

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.println("Keys: " + languages.keySet());
        System.out.println("Values: " + languages.values());
        System.out.println("Entries: " + languages.entrySet());
    }
}

출력

HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Entries: [1=Java, 2=Python, 3=JavaScript]

3. 값 수정하기

replace(key, newValue) 메서드로 주어진 키의 기존 값을 교체. 이전 값 반환, 키가 없으면 null.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("Original HashMap: " + languages);
        languages.replace(2, "C++");
        System.out.println("After replace(): " + languages);
    }
}

출력

Original HashMap: {1=Java, 2=Python, 3=JavaScript} After replace(): {1=Java, 2=C++, 3=JavaScript}

4. 요소 제거하기

remove(key)로 매핑 삭제, 제거된 값 반환. 조건부 제거는 remove(key, value) 사용, 현재 매핑이 지정된 값과 일치할 때만 제거.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String removed = languages.remove(2);
        System.out.println("Removed value: " + removed);
        System.out.println("Updated HashMap: " + languages);
    }
}

출력

HashMap: {1=Java, 2=Python, 3=JavaScript} Removed value: Python Updated HashMap: {1=Java, 3=JavaScript}

추가 HashMap 메서드

메서드설명
clear()모든 매핑 제거
compute()키의 새 값 계산
computeIfAbsent()키가 없을 때만 값 계산
computeIfPresent()키가 있을 때만 값 계산
merge()새 매핑을 기존 것과 병합
clone()얕은 복사본 생성
containsKey()특정 키 존재 확인
containsValue()특정 값 존재 확인
size()키/값 쌍 수
isEmpty()맵 비어있는지 확인

HashMap 순회하기

for-each 루프로 키, 값, 엔트리 순회. 엔트리 순회 시 java.util.Map.Entry 임포트.

import java.util.HashMap;
import java.util.Map.Entry;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.print("Keys: ");
        for (Integer key : languages.keySet()) {
            System.out.print(key + ", ");
        }
        System.out.print("\nValues: ");
        for (String value : languages.values()) {
            System.out.print(value + ", ");
        }
        System.out.print("\nEntries: ");
        for (Entry<Integer, String> entry : languages.entrySet()) {
            System.out.print(entry + ", ");
        }
    }
}

출력

HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

다른 맵에서 HashMap 생성하기

기존 맵의 내용으로 HashMap 인스턴스화:

import java.util.HashMap;
import java.util.TreeMap;
class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> evenNumbers = new TreeMap<>();
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);
        System.out.println("TreeMap: " + evenNumbers);
        HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
        numbers.put("Three", 3);
        System.out.println("HashMap: " + numbers);
    }
}

출력

TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}

선택적 생성자 매개변수로 초기 용량과 부하 계수 설정 가능:

HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

기본값은 capacity = 16, load factor = 0.75.

더 깊은 내용은 공식 Java 문서나 Joshua Bloch의 "Effective Java" 같은 권위 있는 자료를 참조하세요.

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  6. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  7. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  8. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교