230224 해시맵, HashMap과 해시셋, HashSet

Jongleee·2023년 2월 24일
0

TIL

목록 보기
190/576

해시맵과 해시셋은 자바에서 해시 함수를 사용하여 데이터를 저장하고 검색하는 해시 기반 데이터 구조

해시맵, HashMap

키-값 쌍을 저장하는 컬렉션 클래스
각 키가 고유한 값에 매핑되는 키를 기반으로 데이터를 저장하고 검색
해시 코드를 사용하여 데이터를 인덱싱하므로 대부분의 작업에 대해 일정한 시간 성능을 제공
키가 해시맵에 추가되면 해시 코드가 계산되어 데이터를 인덱싱
동일한 해시 코드(충돌이라고 함)를 가진 키가 여러 개 있으면 인덱스된 위치의 링크된 목록에 저장

해시셋, HashSet

고유한 요소를 저장하는 컬렉션 클래스
중복 요소를 허용하지 않으며 각 요소는 해시 코드를 기반으로 저장
요소가 HashSet에 추가되면 해당 요소의 해시 코드가 계산되어 내부 데이터 구조에서 해당 요소의 위치를 결정
동일한 해시 코드를 가진 요소가 여러 개 있으면 인덱스된 위치의 연결된 목록에 저장
요소의 존재를 추가, 제거 및 테스트하는 방법을 제공

HashMap과 HashSet의 주요 차이점

1. 사용법

  • 해시맵
    일반적으로 키-값 쌍을 저장하여 키를 통한 캐싱, 인덱싱 및 데이터 저장에 자주 사용
  • 해시셋
    고유한 요소를 저장하는 데 사용되며 종종 컬렉션에서 요소의 존재를 확인하는 데 사용

2. 특정 작업의 성능

  • 해시맵
    키를 사용하여 데이터를 인덱싱하므로 키를 기반으로 특정 요소를 검색하는 것에 최적화
  • 해시셋
    컬렉션에서 요소의 존재를 확인하는 데 최적화

예시

1. 해시맵, HashMap

import java.util.HashMap;

public class ExampleHashMap {
    public static void main(String[] args) {
        // create a HashMap to store String keys and values
        HashMap<String, String> map = new HashMap<>();

        // add some key-value pairs to the map
        map.put("apple", "red");
        map.put("banana", "yellow");
        map.put("grape", "purple");

        // retrieve the value associated with a key
        String color = map.get("apple");
        System.out.println("The color of an apple is " + color);

        // remove a key-value pair from the map
        map.remove("banana");

        // print all keys and values in the map
        for (String key : map.keySet()) {
            String value = map.get(key);
            System.out.println(key + " is " + value);
        }
    }
}

출력

The color of an apple is red
apple is red
grape is purple

2. 해시셋, HashSet

import java.util.HashSet;

public class ExampleHashSet {
    public static void main(String[] args) {
        // create a HashSet to store String elements
        HashSet<String> set = new HashSet<>();

        // add some elements to the set
        set.add("apple");
        set.add("banana");
        set.add("grape");

        // check if an element is in the set
        boolean containsApple = set.contains("apple");
        boolean containsOrange = set.contains("orange");
        System.out.println("The set contains an apple: " + containsApple);
        System.out.println("The set contains an orange: " + containsOrange);

        // remove an element from the set
        set.remove("banana");

        // print all elements in the set
        for (String element : set) {
            System.out.println(element);
        }
    }
}

출력

The set contains an apple: true
The set contains an orange: false
apple
grape

0개의 댓글