JAVA HashMap 개념 및 사용 방법

Noahddd·2024년 10월 28일

JAVA

목록 보기
9/12

공부의 정리 및 복습을 위한 기록입니다.

HashMap에 대한 자료구조와 JAVA에서 지원하는 Map 인터페이스의 구현 클래스 중 가장 많이 사용하는 HashMap에 대한 내용 및 메서드를 정리하려고한다.

우선 HashMap이란 Key와 Value를 쌍으로 저장하는 구조의 저장 방식이다.
Key값은 중복이 될 수 없으며 Key값을 Hash함수를 통하여 HashCode로 바꾸어 저장되며 이 HashCode는 Index역할을 한다.
Key값은 중복이 허용 되지 않지만 Key값을 Hashcode로 변환하는 Hashing 도중 동일한 해시코드를 갖게되는 경우를 해싱충돌 (Hashing Collision)이라고 한다.
이 해싱충돌을 방지 및 해결하기 위해서 체이닝, 개방 주소법, 재해싱, 버킷 확장 등의 방법등이 있다.
이러한 해싱과 충돌에 대하여는 Hash의 자료구조를 정리 하면서 더 자세하게 정리 하도록 하겠다.

이제 JAVA에서 지원하는 Map 인터페이스의 구현 클래스인 Hashmap의 메서드 및 사용 방법을 정리하려고 한다.

우선 아래는 Hashmap의 대표적인 메서드이다.

기능메서드설명
객체 추가put(K, V)주어진 K로 V를 저장, K가 이미 있는경우 V를 덮어쓴다.
객체 검색contaninsKey(K)주어진 K가 있는지 여부를 확인
contaninsValue(V)주어진 V가 있는지 여부를확인
Set<Map.Entry<K,V>> entrySetK와 V의 쌍으로 구성된 모든 Entry 객체를 Set에 담아서 반환
get(K)주어진 K에 있는 V를 반환
isEmpty()객체가 비어 있는지 여부를 반환
Keyset()객체의 K를 모두 반환
size()저장된 총 객체수를 반환
객체 삭제remove(K)해당 K의 K와 V를 모두 삭제
clear()저장된 모든 객체를 삭제

위와 같은 대표적인 메서드들이 있으며 아래 예제 코드를 보며
사용 메서드 사용 방법을 익혀 보도록 하겠다.

우선 Hashmap의 선언 방식이다.

        HashMap<String,Integer> map1 = new HashMap<>();//HashMap생성
        HashMap<String,Integer> map2 = new HashMap<>(map1);//map1의 모든 값을 가진 HashMap생성
        HashMap<String,Integer> map3 = new HashMap<>(10);//초기 용량지정

위와 같이 생성과 복사, 초기 용량을 지정하여 생성할 수 있다.

        HashMap<String,Integer> map = new HashMap<>();//HashMap생성

        if (map.isEmpty()) {
            map.put("임팔라", 10);
        }
        map.put("홍길동", 15);
        map.put("전우치", 20);
        map.put("이순신", 25);

        System.out.println(map); // map의 모든 K, V 출력 
        System.out.println(map.get("임팔라")); // map의 "임팔라" 라는 K의 V 출력
        System.out.println(map.keySet()); // map의 K 모아서 출력 
        System.out.println(map.values()); //map의 V 모아서 출력 
        System.out.println(map.size());//map의 객체수 출력

        for (int i : map.values()) {
            System.out.println(i);
        } //for문 이용한 V만 하나씩 가져오기
        for (String s : map.keySet()) {
            System.out.println(s);
        } //for문 이용한 K만 하나씩 가져오기 
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        } // Entry이용 해서 K와 V 하나씩 가져오기
    }
}
출력 : 
{홍길동=15, 임팔라=10, 전우치=20, 이순신=25}
10
[홍길동, 임팔라, 전우치, 이순신]
[15, 10, 20, 25]
4
15
10
20
25
홍길동
임팔라
전우치
이순신
홍길동 15
임팔라 10
전우치 20
이순신 25

위 코드와 같이 생성과 객체 추가 및 객체의 내용을 가져오고 출력할 수 있다.

다음에는 Hash에 대한 자료구조와 Hashing등 조금 더 자세한 내용을 공부하고 정리 해보도록 하겠다.

공부하며 정리와 복습을 위해 저장한 기록입니다. 틀린 부분 및 개선할 부분이 있다면 알려주시면 감사하겠습니다 !

profile
꿈이 많은 개발자 호소인

0개의 댓글