HashSet으로 중복 데이터를 자동제거

Titanium·2025년 1월 10일

HashSet

HashsetExample.java

public class Member {
    public String name;
    public int age;

    public Member(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public boolean equals(Object obj) {
        if (obj instanceof Member) {
            Member member = (Member) obj;
            return member.name.equals(name) && (member.age == age);
        } else {
            return false;
        }
    }

    public int hashCode() {
        return name.hashCode() + age;
    }
}

Member.java

public class Member {
    public String name;
    public int age;

    public Member(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public boolean equals(Object obj) {
        if (obj instanceof Member) {
            Member member = (Member) obj;
            return member.name.equals(name) && (member.age == age);
        } else {
            return false;
        }
    }

    public int hashCode() {
        return name.hashCode() + age;
    }
}

실행결과: 총 객체 수 : 1


코드 핵심 설명

  1. Member 클래스:

    • 객체를 HashSet에 저장할 때 중복 여부를 판단하기 위해 equalshashCode 메서드를 오버라이드.
    • 중복 기준:
      • nameage가 같으면 동일한 객체로 간주.
  2. HashSetExample 클래스:

    • HashSetMember 객체를 저장.
    • 동일한 데이터를 가진 객체는 한 번만 저장됨(중복 방지).
    • 출력: 총 객체 수 : 1.
  3. 작동 원리:

    • hashCode: 객체의 저장 위치(버킷)를 결정.
    • equals: 동일 객체인지 최종 확인.
  4. 결과:

    • new Member("홍길동", 30) 두 번 추가 → 중복 제거 → 객체 수는 1.

핵심 요약:
HashSet중복 데이터를 자동으로 제거하며,
이를 위해 equalshashCode 메서드가 필수이다.


알아두면 좋은개념

활용 예시
List 사용 예:

학생 명단처럼 순서가 중요한 데이터.
예: ArrayList에 학생 이름 저장.
Set 사용 예:

중복을 허용하지 않는 데이터.
예: HashSet에 유니크한 ID 저장.
Map 사용 예:

사전 구조, 키를 이용해 데이터를 빠르게 검색.
예: HashMap<String, String>에 사용자 ID와 이름 저장.

profile
핵심먼저

0개의 댓글