JAVA 에서 HashMap과 HashSet의 차이점 알아보기
Java는 다양한 데이터 구조와 알고리즘을 구현할 수 있는 강력한 프로그래밍 언어입니다. 이 중에서 HashMap
과 HashSet
은 자주 사용되는 두 가지 클래스입니다. 두 클래스 간에는 몇 가지 차이점이 있습니다. 이 글에서는 HashMap
과 HashSet
의 주요 차이점과 각각의 특징에 대해 알아보겠습니다.
HashMap
HashMap
은 Java의 java.util
패키지에 속하는 클래스로, 키와 값의 쌍으로 데이터를 저장하는 자료구조입니다. HashMap
에서는 키를 사용하여 값을 검색하고, 키와 값은 일대일 대응 관계를 가집니다. 여기서 키는 중복될 수 없고, 값은 중복될 수 있습니다.
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("사과", 1);
hashMap.put("바나나", 2);
hashMap.put("딸기", 3);
위의 예제에서 hashMap
은 문자열을 키로 가지고, 정수를 값으로 가지는 HashMap
객체입니다. put
메서드를 사용하여 키와 값을 추가할 수 있습니다.
HashSet
HashSet
은 java.util
패키지에 속하는 클래스로, 중복되지 않는 데이터를 저장하는 자료구조입니다. HashSet
은 내부적으로 HashMap
을 사용하여 구현되어 있습니다. 따라서 요소의 순서를 보장하지 않으며, 요소의 중복을 허용하지 않습니다.
HashSet<String> hashSet = new HashSet<>();
hashSet.add("사과");
hashSet.add("바나나");
hashSet.add("딸기");
위의 예제에서 hashSet
은 문자열 요소를 가지는 HashSet
객체입니다. add
메서드를 사용하여 요소를 추가할 수 있습니다.
HashMap과 HashSet의 차이점
HashMap
과 HashSet
은 몇 가지 구조적인 차이와 동작 방식의 차이가 있습니다.
구조적 차이
HashMap
은 키와 값의 쌍으로 데이터를 저장하며, 내부적으로는 해시 함수를 사용하여 데이터를 검색합니다. 따라서 데이터에 빠르게 접근할 수 있습니다.HashSet
은 요소만을 저장하며, 내부적으로는HashMap
의 키 부분만을 사용하여 데이터를 저장합니다. 따라서 데이터의 순서를 보장하지 않으며, 요소의 중복을 허용하지 않습니다.
요소의 중복 허용 여부
HashMap
은 키의 중복을 허용하지 않습니다. 두 개 이상의 동일한 키를 가질 경우, 가장 마지막에 추가된 값으로 덮어씁니다.HashSet
은 요소의 중복을 허용하지 않습니다. 따라서 이미 존재하는 요소를 추가하려고 할 경우, 변경이 일어나지 않습니다.
값과 키의 관계
HashMap
에서는 키와 값은 일대일 대응 관계를 가집니다. 즉, 하나의 키는 하나의 값만을 가질 수 있습니다.HashSet
에서는 키와 값 대신에 요소만을 저장합니다. 따라서 값과 요소의 관계는 없으며, 요소가 직접 검색의 주체가 됩니다.
결론
Java에서 HashMap
과 HashSet
은 서로 다른 자료구조이며, 각각의 특징과 용도에 따라 사용됩니다. HashMap
은 키와 값의 쌍으로 데이터를 저장하고, HashSet
은 요소만을 저장합니다. 두 클래스는 목적에 맞게 사용하여 데이터를 효율적으로 관리할 수 있습니다.