반응형
컬렉션 프레임워크 중 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을 적극 활용하시면 좋습니다.
'Java > 자바 정리' 카테고리의 다른 글
143. 키-값 쌍을 저장하는 HashMap – 중복 처리와 순회 방법 (0) | 2025.05.20 |
---|---|
142. HashSet에서 요소를 안전하게 제거하는 방법 – Iterator 활용 (0) | 2025.05.20 |
141. 사용자 정의 객체의 중복 비교 – hashCode()와 equals() 재정의 (0) | 2025.05.20 |
139. ArrayList vs LinkedList 성능 비교 (0) | 2025.05.20 |
138. Vector로 멀티스레드 환경에서도 안전하게 저장하기 (1) | 2025.05.20 |
137. ArrayList로 객체 관리하기 – Board 클래스 예제 (0) | 2025.05.20 |