HashMap, HashSet 사용법, 차이

ilkwon bae·2023년 4월 23일
0

HashMap과 HashSet은 Java에서 두 가지 중요한 데이터 구조입니다.

HashMap:
HashMap은 키-값 쌍을 저장하는 데이터 구조입니다. 각 버킷은 키-값 쌍의 연결된 목록인 버킷 배열을 사용하여 구현됩니다. 키는 배열에 인덱싱하는 데 사용되며 값은 해당 연결 목록에 저장됩니다. HashMap은 요소를 추가, 제거 및 검색하기 위한 일정한 시간 복잡도를 제공합니다(좋은 해시 함수가 사용된다고 가정).

HashSet:
HashSet은 요소 집합(즉, 키-값 쌍이 아닌 값)을 저장하는 데이터 구조입니다. 값이 키이고 HashMap의 값이 모두 동일한 객체(예: null)로 설정되는 HashMap을 사용하여 구현됩니다. 이는 요소를 추가, 제거 및 검색하기 위한 일정한 시간 복잡성을 허용합니다(좋은 해시 함수가 사용된다고 가정).

주목해야 할 한 가지 중요한 점은 HashSet이 중복을 허용하지 않는다는 것입니다. HashSet에 요소를 추가할 때 먼저 해당 요소가 집합에 이미 존재하는지 확인합니다(해시 함수 사용). 요소가 이미 있으면 다시 추가되지 않습니다.

다음은 Java에서 HashMap 및 HashSet을 사용하는 예입니다.

import java.util.HashMap;
import java.util.HashSet;

public class HashMapHashSetExample {
    public static void main(String[] args) {
        // Example of using a HashMap
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);
        int age = map.get("Bob"); // age = 30

        // Example of using a HashSet
        HashSet<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("orange");
        boolean containsApple = set.contains("apple"); // true
        boolean containsGrape = set.contains("grape"); // false
        set.add("apple"); // adding duplicate element, but set size does not increase
        int setSize = set.size(); // setSize = 3
    }
}

이 예제에서는 HashMap을 만들어 세 사람의 나이를 저장합니다. 세 개의 키-값 쌍을 맵에 추가한 다음 "get" 메서드를 사용하여 Bob의 나이를 검색합니다. 그런 다음 세 가지 과일을 저장할 HashSet을 만듭니다. 세트에 3개의 요소를 추가한 다음 세트에 "사과"와 "포도"가 포함되어 있는지 확인합니다. 또한 세트에 "사과"를 다시 추가하지만(복제) 세트의 크기는 증가하지 않습니다.

profile
좋은 개발자가 되고 싶은 그냥 개발자

0개의 댓글