JAVA 에서 HashMap과 HashSet의 차이점 알아보기

Java는 다양한 데이터 구조와 알고리즘을 구현할 수 있는 강력한 프로그래밍 언어입니다. 이 중에서 HashMapHashSet은 자주 사용되는 두 가지 클래스입니다. 두 클래스 간에는 몇 가지 차이점이 있습니다. 이 글에서는 HashMapHashSet의 주요 차이점과 각각의 특징에 대해 알아보겠습니다.



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

HashSetjava.util 패키지에 속하는 클래스로, 중복되지 않는 데이터를 저장하는 자료구조입니다. HashSet은 내부적으로 HashMap을 사용하여 구현되어 있습니다. 따라서 요소의 순서를 보장하지 않으며, 요소의 중복을 허용하지 않습니다.

HashSet<String> hashSet = new HashSet<>();
hashSet.add("사과");
hashSet.add("바나나");
hashSet.add("딸기");

위의 예제에서 hashSet은 문자열 요소를 가지는 HashSet 객체입니다. add 메서드를 사용하여 요소를 추가할 수 있습니다.



HashMap과 HashSet의 차이점

HashMapHashSet은 몇 가지 구조적인 차이와 동작 방식의 차이가 있습니다.

구조적 차이

  • HashMap은 키와 값의 쌍으로 데이터를 저장하며, 내부적으로는 해시 함수를 사용하여 데이터를 검색합니다. 따라서 데이터에 빠르게 접근할 수 있습니다.
  • HashSet은 요소만을 저장하며, 내부적으로는 HashMap의 키 부분만을 사용하여 데이터를 저장합니다. 따라서 데이터의 순서를 보장하지 않으며, 요소의 중복을 허용하지 않습니다.

요소의 중복 허용 여부

  • HashMap은 키의 중복을 허용하지 않습니다. 두 개 이상의 동일한 키를 가질 경우, 가장 마지막에 추가된 값으로 덮어씁니다.
  • HashSet은 요소의 중복을 허용하지 않습니다. 따라서 이미 존재하는 요소를 추가하려고 할 경우, 변경이 일어나지 않습니다.

값과 키의 관계

  • HashMap에서는 키와 값은 일대일 대응 관계를 가집니다. 즉, 하나의 키는 하나의 값만을 가질 수 있습니다.
  • HashSet에서는 키와 값 대신에 요소만을 저장합니다. 따라서 값과 요소의 관계는 없으며, 요소가 직접 검색의 주체가 됩니다.




결론

Java에서 HashMapHashSet은 서로 다른 자료구조이며, 각각의 특징과 용도에 따라 사용됩니다. HashMap은 키와 값의 쌍으로 데이터를 저장하고, HashSet은 요소만을 저장합니다. 두 클래스는 목적에 맞게 사용하여 데이터를 효율적으로 관리할 수 있습니다.

You may also like...