[JAVA] HashMap

myminimin·2023년 8월 7일
0

JAVA

목록 보기
14/21
  • HashMap/Hasptable : Map을 구현하는 대표 클래스, Key와 Value를 한 쌍으로 저장하는 특징이 있다. 많은 양의 데이터를 검색하는데 좋다.
    (Hashtable과 HashMap과의 차이점은 Thread-Safe인지 아닌지가 그 차이점인데 Hashtable은 동기화가 걸려있어서 Thread-Safe하다고 할 수 있으며 HashMap은 동기화가 없어 unsafe하다고 할 수 있다! Hashtable의 table은 소문자다! 주의!)

1. 키, 값 put(추가), get(조회)

import java.util.HashMap;

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

        // 데이터 추가
        hashMap.put("apple", 5);
        hashMap.put("banana", 3);
        hashMap.put("orange", 7);

        // 데이터 조회
        System.out.println("Number of apples: " + hashMap.get("apple"));
        System.out.println("Number of bananas: " + hashMap.get("banana"));
        System.out.println("Number of oranges: " + hashMap.get("orange"));

        // 존재하지 않는 키 조회
        System.out.println("Number of grapes: " + hashMap.get("grape")); // 출력: null

        // 기본값을 사용하여 존재하지 않는 키 조회
        System.out.println("Number of grapes: " + hashMap.getOrDefault("grape", 0)); // 출력: 0
    }
}

이 코드에서는 HashMap을 생성하고 put 메서드를 사용하여 데이터를 추가합니다. 그리고 get 메서드를 사용하여 특정 키에 대한 값을 조회합니다. 또한 존재하지 않는 키를 조회할 때 getOrDefault 메서드를 사용하여 기본값을 반환하는 방법도 있다.

필요에 따라 데이터 유형과 키, 값의 데이터 유형을 수정하여 코드를 사용자 정의할 수 있다.


2. 특정 키의 값을 조회, 키가 맵 안에 없는 경우 기본값을 반환하는 getOrDefault

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

public class MapExample {
	public static void main(Stringp[] args) {
    	Map<String, Integer> userPoints = new HashMAp<>();
        
        // 데이터 추가
        userPoints.put("Ogi", 100);
        userPoints.put("Min", 150);
        
        // 사용자의 포인트 조회
        String userName = "Minsu";
        int points = userPoints.getOrDefault(userName, 0);
        System.out.println(userName + "'s points: " + points);
        // 출력: Minsu's points: 0
}

맵에 특정 키가 있는 지 검사하고, 키가 없을 경우에 기본값을 사용하여 안전하게 데이터를 가져올 때 유용하다. 위의 예시에서 'userName'이라는 키가 맵에 존재하지 않을 때, 'getOrDefault' 메서드는 기본값인 0을 반환하여 에러를 방지한다. 이와 같은 상황에서 코드의 안정성을 높일 수 있는 유용한 메서드이다!


3. 맵 안에 특정 키가 존재하는지 여부를 확인하는 containsKey

boolean containsMin = userPoints.containsKey("Min");
if (containsMin) {
	// Min의 데이터가 맵에 존재함
} else {
	// Min의 데이터가 맵에 존재하지 않음
}

특정 키가 맵 안에 있는지 확인하여 'true' 또는 'false' 값을 반환한다. containsKey는 '값을 가져오는 것'이 아니라 단순히 키의 '존재 여부'를 확인하는데 사용한다!


따라서, containsKey는 단순히 특정 키의 존재 여부를 확인하고자 할 때 사용하며, getOrDefault는 특정 키의 값을 가져오면서 해당 키가 존재하지 않을 경우에 기본 값을 반환하고자 할 때 사용한다!!!


사용할 때마다 적어두자 👈😊

  • Two Sum => put, get, containsKey 사용

0개의 댓글