Java (자바)

[Java] HashMap / 해시맵

Oscar:) 2024. 2. 6. 04:13

 

 

이번 포스팅에서는 Map의 한 종류인

HashMap에 대해 알아보자.

 

 

 


 

HashMap ?

 

 

Map 인터페이스를 상속하는 대표적인 Map의 컬렉션이다.

 

Map은 key - value 로 이루어진 객체를 저장하는 구조이며,

HashMap도 Map을 상속하기에 동일한 구조를 사용한다.

 

 

HashMap은 이름 그대로 Hashing을 통해 데이터를 검색하기 때문에,

많은 양의 데이터를 다룰 때 좋은 성능을 보인다.

 

*Hashing : key 값에 연산을 적용하여 객체의 주소를 계산하여 접근하는 방식.

다른 대부분의 탐색 방법들은 일치하는 key를 찾을 때까지 반복 순회한다.

 

 

 

✅ 특징

 

● key는 고유의 값을 가진다.

중복된 key 값이 입력되면 해당 데이터가 덮어 쓴다.

 

● key, value에 null 값을 저장할 수 있다.

 

● 데이터의 순서가 보장되지 않는다.

 

 

 


 

사용법

 

 

✅ 해시맵 선언

 

// 기본 문법
HashMap<key 타입, value 타입> hashMap = new HashMap<key 타입, value 타입>();

// 초기화 부분에는 타입 생략 가능
HashMap<key 타입, value 타입> hashMap = new HashMap<>();

// 초기화 시 크기 지정 가능
HashMap<key 타입, value 타입> hashMap = new HashMap<>(5);

 

 


 

✅ 해시맵에 값 추가

 

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

hashMap.put("Oscar", 29);
hashMap.put("Naki", 34);
hashMap.put("Human", 26);
        
System.out.println(hashMap);

 

key - String, value - int 타입의 해시맵을 초기화 후

HashMap.put() 메서드로 값을 추가하고 출력했다.

 

 

결과)

 

 

 


 

✅ 해시맵 값 삭제

 

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

hashMap.put("Oscar", 29);
hashMap.put("Naki", 34);
hashMap.put("Human", 26);

System.out.println("삭제 전 : " + hashMap);

hashMap.remove("Naki");

System.out.println("삭제 후 : " + hashMap);

 

HashMap.remove(key) 메서드를 사용하면

해당 키의 데이터를 삭제할 수 있다.

 

 

결과)

 

 

 

 

 

해시맵의 모든 데이터를 삭제하려면 다음과 같이 할 수 있다.

 

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

        hashMap.put("Oscar", 29);
        hashMap.put("Naki", 34);
        hashMap.put("Human", 26);

        System.out.println("삭제 전 : " + hashMap);

        hashMap.clear();

        System.out.println("삭제 후 : " + hashMap);

 

HashMap.clear()

 

 

결과)

 

 

 


 

✅ 해시맵 value 데이터 불러오기

 

위에서는 해시맵을 통째로 출력했는데,

특정 key의 value만을 출력해야할 경우가 더 많다.

 

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

hashMap.put("Oscar", 29);
hashMap.put("Naki", 34);
hashMap.put("Human", 26);

System.out.println(hashMap.get("Oscar"));

 

HashMap.get(key) 메서드를 사용한다.

 

 

결과)

 

 

 


 

✅ 해시맵 모든 value 데이터 불러오기

 

HashMap의 key 값이 정렬된 int 형이라면 반복문으로 불러오는 것은 어렵지 않다.

하지만 key 값이 String 등 다른 자료형이라면 확장 for문을 통해 불러올 수 있다.

 

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

hashMap.put("Oscar", 29);
hashMap.put("Naki", 34);
hashMap.put("Human", 26);

for (String key : hashMap.keySet()) {
    System.out.println(hashMap.get(key));
}

 

HashMap.keySet() 메서드를 활용하여 모든 key를 불러오고

확장 for문으로 String 변수에 대입 받아서 반복 출력했다.

 

 

결과)

 

 

데이터의 순서를 보장하지 않는 해시맵의 특징 때문에

정렬은 별도로 해주어야 한다.

 

 


 


 

 

이번 포스팅에서는 HashMap에 대해 알아보았다.

 

은근히 여기저기 사용할 곳이 많다고 느낀다.