Java/자바 정리

140. 중복을 허용하지 않는 Set – HashSet의 특징

코딩하는냥이 2025. 5. 20. 12:09
반응형

컬렉션 프레임워크 중 Set 계열은 중복된 데이터를 저장하지 않는 특징이 있습니다.
그중 HashSet은 가장 기본적인 구현체로, 객체를 저장할 때 순서를 고려하지 않으며, 중복은 자동으로 제거합니다.
이번 예제는 HashSet에 중복된 문자열을 추가했을 때, 실제로 저장된 객체 수가 어떻게 되는지를 확인합니다.


📌 예제 코드

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		set.add("Java");
		set.add("JDBC");
		set.add("JSP");
		set.add("Java");    // 중복된 값
		set.add("Spring");

		System.out.println("총 객체의 수 : " + set.size());
	}
}

💻 실행 결과

총 객체의 수 : 4

💬 코드 설명

  • Set 인터페이스를 구현한 HashSet 컬렉션은 중복된 데이터를 자동으로 제거합니다.
  • "Java" 문자열을 두 번 add() 했지만, 내부적으로 equals()와 hashCode()를 통해
    이미 존재하는 값이라는 것을 판단하고 중복 저장을 하지 않습니다.
  • 결과적으로 "Java", "JDBC", "JSP", "Spring"만 저장되어 객체 수는 4개가 됩니다.

💡 포인트 정리

  • HashSet은 순서를 보장하지 않으며, 중복된 값을 자동으로 제거합니다.
  • 내부적으로 hashCode() 값과 equals() 메서드를 기준으로 동등 객체인지 판별합니다.
  • 같은 데이터를 여러 번 넣어도, 저장은 단 한 번만 됩니다.
  • 중복이 허용되지 않는 데이터 저장이 필요할 때 가장 적합한 컬렉션입니다.

📌정리하자면, HashSet은 중복 없는 데이터를 관리해야 할 때 매우 유용한 자료구조입니다.
이번 예제를 통해 같은 문자열 "Java"를 여러 번 넣더라도, 실제 저장은 한 번만 된다는 것을 확인할 수 있었습니다.
따라서 회원 ID, 태그, 분류 목록 등 중복이 불필요한 데이터의 집합을 다룰 때 HashSet을 적극 활용하시면 좋습니다.